[Basi di dati] Una semplice query

Atem1
Salve ragazzi, avrei un problemino con questo esercizio:

Sia dato il seguente schema di base di dati:

IMPIEGATO(IDImpiegato, Reparto, Stipendio, Nome, Cognome, AnnoNascita, Indirizzo)
PROGETTO(Nome, Sede, IDResponsabile, Budget)
PARTECIPAZIONE(IDPartecipante, IDProgetto, Mansione)

Scrivere la query SQL per trovare:
 L’elenco dei responsabili dei progetti con budget maggiore di 100000 Euro




Io l'ho risolto così:

select I.Cognome, I.Nome
from PROGETTO, IMPIEGATO I, PARTECIPAZIONE
where IDImpiegato=IDPartecipante
and	IDProgetto=PROGETTO.Nome
and	IDImpiegato= any ( 	select IDResponsabile
                                       from PROGETTO
                                       where Budget>=100000
                                   )



Mentre la soluzione dice:
select I.Cognome, I.Nome
from PROGETTO, IMPIEGATO I, PARTECIPAZIONE
where IDImpiegato=IDPartecipante
and	IDProgetto=PROGETTO.Nome
and	IDResponsabile= any ( 	select IDResponsabile
                                                from PROGETTO
                                                where Budget>=100000
                                        )



Io penso che la query della soluzione non mi restituisca l'elenco dei responsabili, ma l'elenco di tutti gli impiegati che partecipano a progetti con budget >= 100000
Qualcuno potrebbe spiegarmi perchè quello che sto dicendo è sbagliato se la soluzione è giusta?

Grazie per l'attenzione.

Risposte
apatriarca
Anche io la penso come te riguardo alla soluzione postata. Non viene infatti richiesto da nessuna parte nella condizione che il responsabile debba essere uguale all'impiegato. Non è comunque inoltre chiaro lo scopo di usare anche la tabella PARTECIPAZIONE. A meno che io abbia frainteso qualcosa è infatti sufficiente fare qualcosa come il seguente:
select Cognome, Nome from IMPIEGATO
where IDImpiegato in (select IDResponsabile from PROGETTO where Budget >= 100000);

o anche qualcosa come il seguente
select Cognome, Nome from IMPIEGATO, PROGETTO
where IDImpiegato = IDResponsabile and Budget >= 100000

Atem1

select Cognome, Nome from IMPIEGATO, PROGETTO
where IDImpiegato = IDResponsabile and Budget >= 100000

Sisi avrei anche potuto fare così, in effetti non c'era bisogno di coinvolgere la tabella partecipazione.

"apatriarca":
Anche io la penso come te riguardo alla soluzione postata.

Ok grazie mille, infatti ero convinto che fosse sbagliata.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.