• T4CH
  • NEWS
  • VIDEO
Forum > Software

aiuto subquery urgente

Discussione inserita in 'Software' da topolus, 9 Giugno 2009.

  1. topolus techNewbie

    aiuto subquery urgente

    buon giorno a tutti mi chiamo manuel e ho un problema , il mio professore mi ha chiesto di fare le sequenti query , e le ho ftt:



    Code:
    a. Produrre l'elenco dei soci che hanno un debito nella BdT.
    
    
    
    Questa interrogazione si risolve in 3 passi.
    
    
    
    PASSO 1. In una tabella temporanea Tmp1 si mettono tutti i codici socio con la somma delle
    
    ore Ricevute.
    
    
    
    SELECT Cod_Soc_Ric_Ero, Sum(Ore_Ero) AS Ricevute INTO Tmp1
    
    FROM Erogate
    
    GROUP BY Cod_Soc_Ric_Ero
    
    
    
    PASSO 2. In un'altra tabella temporanea Tmp2 si mettono tutti i codici socio con la somma
    
    delle ore fatte.
    
    
    
    SELECT Cod_Soc_Fat_Ero, Sum(Ore_Ero) AS Fatte INTO Tmp2
    
    FROM Erogate
    
    GROUP BY Cod_Soc_Fat_Ero
    
     
    
    PASSO 3. Si selezionano i soci in cui la somma delle ore ricevute è maggiore di quelle fatte.
    
    
    
    SELECT Cod_Soc, Nome_Soc, Telefono_Soc, Tmp1.Ricevute AS Ricevute, Tmp2.Fatte AS Fatte
    
    FROM Soci, Tmp1, Tmp2
    
    WHERE (Cod_Soc=Tmp1.Cod_Soc_Ric_Ero) AND 
    
          (Tmp1.Cod_Soc_Ric_Ero=Tmp2.Cod_Soc_Fat_Ero) AND 
    
          (Tmp1.Ricevute>Tmp2.Fatte) 
    
    
    
    --------------------------------------------------------------------------------
    
    
    
    b. Data una richiesta di prestazione, visualizzare la porzione di mappa del territorio
    
    nel quale si trova il socio richiedente e l'elenco di tutti i soci che si trovano in quella
    
    zona in grado di erogare quella prestazione, visualizzandone il nome, cognome, indirizzo e
    
    numero di telefono.
    
    
    
    Questa interrogazione si risolve in 2 passi.
    
    
    
    PASSO 1. Si seleziona il territorio (codice + link) del socio richiedente e lo si salva in una
    
    tabella temporanea Tmp3.
    
    
    
    SELECT  Cod_Ter AS Cod_Ter_Tmp3 , Link_Ter AS Linker_Ter_Tmp3 INTO Tmp3
    
    FROM    Territori, Zone,Soci
    
    WHERE  ([Codice Socio Richiedente]=Cod_Soc) AND 
    
           (Cod_Zon_Soc=Cod_Zon) AND 
    
           (Cod_Ter_Zon=Cod_Ter) 
    
    
    
    PASSO 2. Si selezionano tutti i soci che forniscano la prestazione richiesta e si trovano
    
    nello stesso territorio del socio richiedente
    
    
    
    SELECT  Cod_Soc, Nome_Soc, Indirizzo_Soc, Telefono_Soc, Cod_Mes, Descrizione_Mes, 
    
            Cod_Zon_Soc, Cod_Ter
    
    FROM    Soci,Prestazioni,Mestieri,Zone,Territori,Tmp3
    
    WHERE   ([Inserisci il codice del Mestiere Richiesto]=Cod_Mes_Pre) AND
    
            (Cod_Mes_Pre=Cod_Mes)AND(Cod_Soc_Pre=Cod_Soc) AND 
    
            (Cod_Zon_Soc=Cod_Zon)AND(Cod_Ter_Zon=Cod_Ter)AND(Cod_Ter=Cod_Ter_Tmp3)
    
    
    
    ---------------------------------------------------------------------------------------
    
    
    
    c. Visualizzare tutti i soci che fanno parte della segreteria e che offrono anche
    
    altri tipi di prestazioni (non visualizzare coloro che fanno SOLO segreteria).
    
    
    
    Questa interrogazione si risolve in 2 passi.
    
    
    
    PASSO 1. Si selezionano tutti i soci che fanno servizio di segreteria e si salvano in 
    
    una tabella temporanea Tmp4.
    
    
    
    SELECT  Cod_Mes AS  Cod_Mes_Tmp4, Descrizione_Mes,Cod_Soc AS Cod_Soc_Tmp4, Nome_Soc INTO Tmp4
    
    FROM  Mestieri, Prestazioni, Soci
    
    WHERE ('SEGRETERIA'=Descrizione_Mes)AND(Cod_Mes=Cod_Mes_Pre)AND(Cod_Soc_Pre=Cod_Soc)
    
    
    
    PASSO 2. Si selezionano gli altri mestieri che fanno i soci contenuti in Tmp4. NOTA: con
    
    l'ultimo clausola (Cod_Mes<>Cod_Mes_Tmp4) si escludono quelli che fanno SOLO lavoro di 
    
    segreteria.
    
    
    
    SELECT Cod_Soc, Soci.Nome_Soc, Mestieri.Descrizione_Mes
    
    FROM Soci, Prestazioni, Mestieri, Tmp4
    
    WHERE (Cod_Soc_Tmp4=Cod_Soc)  AND  (Cod_Soc=Cod_Soc_Pre)  AND  
    
        (Cod_Mes_Pre=Cod_Mes)   AND  (Cod_Mes<>Cod_Mes_Tmp4)
    
    
    
    --------------------------------------------------------------------------------------
    
    
    
    d. Produrre un elenco delle prestazioni ordinato in modo decrescente secondo il numero
    
    di ore erogate.
    
    
    
    SELECT Cod_Mes_Ero, Sum(Ore_Ero) AS Ore INTO Tmp5
    
    FROM Erogate
    
    GROUP BY Cod_Mes_Ero
    
    
    
    
    
    SELECT Cod_Mes, Descrizione_Mes, Tmp5.Ore
    
    FROM Mestieri, Tmp5
    
    WHERE (Cod_Mes=Tmp5.Cod_Mes_Ero) ORDER BY Tmp5.Ore DESC


    poi però mi ha chiesto di fare le stesse query cn le subquery ma io non so propio cosa siano e come si fanno vorrei una mano grazie
    topolus, 9 Giugno 2009
    #1
  2. Davide Amministratore

    Scusa, linguaggio?
    Davide, 9 Giugno 2009
    #2
  3. Nino techNewbie

    Sql?
    Nino, 9 Giugno 2009
    #3
  4. ubu techNewbie

    topolus vedi qui

    fammi sapere...
    ubu, 9 Giugno 2009
    #4
Password dimenticata?
SU TERMINI DI SERVIZIO CONTATTACI