na non funziona così!
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
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:
Allora...
Io posto questa soluzione...provala pure e dimmi se ti funziona... ovviamente non è una sola query...![]()
Fammi sapereCodice 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
![]()
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:
Gesu'!!!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))
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)
Ah...non cercavi la soluzione in php....
Allora se potevi fare le query annidate, potevi dirlo subito...
![]()
Ora guarderò la soluzione...
![]()
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
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
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!
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)”
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!