monelli
21-01-2008, 16:00
Ciao a tutti... domani ho un esame di base di dati ed ho un dubbio.
Mi potete aiutare? grazie.
DIPENDENTE(Matr, Nome, Mansione, CodD)
DIPARTIMENTO(CodD, NomeD)
FERIE(Matr, DataInizio, DurataInGiorni)
Grassetto sottolineato vuol dire che sono chiavi primarie
Visualizzare il codice dei dipartimenti che non hanno nessun dipendente che ha effettuato complessivamente pių di 21 giorni di ferie.
Io ho risolto cosė:
SELECT CodD
FROM DIPARTIMENTO U
WHERE NOT EXIST (SELECT Matr
FROM DIPENDENTE D, FERIE F
WHERE D.Matr=F.Matr AND D.CodD=U.CodD
GROUP BY Matr
HAVING SUM(DurataInGiorni)>21);
Soluzione proff:
SELECT CodD
FROM DIPARTIMENTO
WHERE CodD NOT IN (SELECT CodD
FROM DIPENDENTE D, FERIE F
WHERE D.Matr=F.Matr
GROUP BY D.Matr, CodD
HAVING SUM(DurataInGiorni)>21);
Ora la mia č sbagliata o sono equivalenti????? perchč?????
Mi potete aiutare? grazie.
DIPENDENTE(Matr, Nome, Mansione, CodD)
DIPARTIMENTO(CodD, NomeD)
FERIE(Matr, DataInizio, DurataInGiorni)
Grassetto sottolineato vuol dire che sono chiavi primarie
Visualizzare il codice dei dipartimenti che non hanno nessun dipendente che ha effettuato complessivamente pių di 21 giorni di ferie.
Io ho risolto cosė:
SELECT CodD
FROM DIPARTIMENTO U
WHERE NOT EXIST (SELECT Matr
FROM DIPENDENTE D, FERIE F
WHERE D.Matr=F.Matr AND D.CodD=U.CodD
GROUP BY Matr
HAVING SUM(DurataInGiorni)>21);
Soluzione proff:
SELECT CodD
FROM DIPARTIMENTO
WHERE CodD NOT IN (SELECT CodD
FROM DIPENDENTE D, FERIE F
WHERE D.Matr=F.Matr
GROUP BY D.Matr, CodD
HAVING SUM(DurataInGiorni)>21);
Ora la mia č sbagliata o sono equivalenti????? perchč?????