Pagina 4 di 5 primaprima ... 2 3 4 5 ultimoultimo
Visualizzazione dei risultati da 31 a 40 su 50
  1. #31
    na non funziona così!
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  2. #32
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    Mah...secondo me non è possibile fare tutto ciò in un'unica query senza utilizzare query annidate....

    Qualcuno può smentirmi? (e magari postare la soluzione?) :master:

  3. #33
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    Allora...

    Io posto questa soluzione...provala pure e dimmi se ti funziona... ovviamente non è una sola query...

    Codice PHP:
    $strsql "
      SELECT ID_prog
      FROM Progetto
      WHERE ID_Dip = 3
      "
    ;
    $result mysql_query($strsql) or die("Impossibile eseguire la query");

    //inizializzo l'array dei progetti supervisionati
    $progetti_supervisionati = array();

    // creo l'insieme dei progetti supervisionati
    while ( ($progetto mysql_fetch_row($result)) )
      
    $progetti_supervisionati[] = $progetto[0];
    $in_progetti join("','",$progetti_supervisionati);
    $num_progetti_supervisionati count($progetti_supervisionati);


    // recupero gli impiegati che lavorano a progetti supervisionati dal
    // dipartimento 3
    $strsql "
      SELECT Nome, Cognome, CF_imp, COUNT(CF_imp) AS tot_progetti
      FROM Lavora_Su
      LEFT JOIN Impiegato ON CF_imp = CF
      WHERE ID_Prog_Lav IN ('
    $in_progetti')
      GROUP BY CF_imp
      "
    ;
    $result mysql_query($strsql) or die("Impossibile eseguire la query");

    // inizializzo l'array degli impiegati che lavorano a TUTTI i progetti
    // supervisionati dal dipartimento 3
    $impiegati = array();

    // filtro gli impiegati che non servono....
    while ( ($impiegato mysql_fetch_assoc($result)) )
      if ( 
    $impiegato['tot_progetti'] == $num_progetti_supervisionati )
        
    $impiegati[] = 
          array(
            
    'Nome'  =>  $impiegato['Nome'],
            
    'Cognome' =>  $impiegato['Cognome']
          );
                
    // a questo punto $impiegati contiene TUTTI gli impiegati che lavorano 
    // a TUTTI i progetti supervisionati da 3 
    Fammi sapere

  4. #34
    Haime' e' un esame di basi di dati, posso usare solo SQL!
    Comunque mi hanno passato la soluzione, ma non ci ho capito molto, ora ve la posto, vediamo se riusciamo a capirci qualcosa insieme:
    codice:
    select nome, cognome
    from Impiegato
    where not exists (select *
                              from lavora_su B
                              where (B.ID_Prog_lav in (select ID_Prog
                                                                  from progetto
                                                                  where ID_Dip_gestore=3))
                                        and not exists (select *
                                                                  from lavora_su C
                                                                  where C.CF_Imp=CF
                                                                  and C.ID_Prog_lav=B.ID_Prog_lav))
    Gesu'!!!
    Vi ripropongo le tabelle cosi' non dovete andare a cercarle indietro:

    Impiegato (CF, Nome, cognome)
    lavora_su (CF_Imp, ID_Prog_lav)
    Progetto (ID_Prog, ID_DIP_gestore)

  5. #35
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    Ah...non cercavi la soluzione in php....
    Allora se potevi fare le query annidate, potevi dirlo subito...


    Ora guarderò la soluzione...


  6. #36
    VVoVe: l'uso di NOT EXIST lo ignoravo proprio!!!

    cmq era abastanza difficile, mai vista una così prima !!

    cmq NOT EXIST che fa?
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  7. #37
    cacchio funziona davvero!!!
    l'ho appena provata.. ma in quale ingegneria informatica studi?
    cioè quale città?
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  8. #38
    A Bari.
    Tieni conto che la query e' l'esercizio 4 dell'esame: nel primo devi fare un diagramma entita' relazioni, nel secondo trasformarlo in tabelle, nel terzo una normalizzazione. Tutto in 2 ore purtroppo!
    Ho visto che in molte tracce passate c'e' la condizione "dove l'attributo x ha partecipato a TUTTE le tuple dove...", insomma la query in questione; percio' e' molto importante che qualcuno ci capisca qualcosa!

  9. #39
    Mhhh... da quello che capito se la subquery di NON EXIST ritorna false la riga non viene considerata ...
    Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi! (A.Einstein)

  10. #40
    Io credevo il contrario!
    Dai belli, ora che c'e' la soluzione (e' opera del prof. stesso) c'e' solo da capirla, ma qui mi serve una mano davvero!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.