ANY
Usata per mettere in clausola WHERE il risultato di un'altra query o di un elenco.
Es.= SELECT
Campo1
FROM
Tabella1
WHERE
Tabella1.CampoX = ANY (SELECT ……..)
Es.= SELECT
Campo1
FROM
Tabella1
WHERE
Tabella1.CampoX = ANY (valore1, valore2)
IN
Stesso significato diversa sintassi
Es.= SELECT
Campo1
FROM
Tabella1
WHERE
Tabella1.Campo2
IN (SELECT ……..)
SUBQUERY CORRELATE
Mediante alias di tabelle/query posso passare parametri all'interno/esterno delle subquery
EXISTS
True se la subquery ritorna almeno 1 valore
NOT EXISTS
Opposto di EXISTS
Implementazione della DIVISIONE
Regola del controesempio: doppia negazione con NOT EXISTS
Es:
Gli impiegati che partecipano a tutti i progetti con budget > 50k
=
Tutti gli impiegati esclusi (quelli a cui manca almeno un progetto > 50k)
=
Tutti gli impiegati esclusi (gli impiegati a cui manca la partecipazione (ad un progetto da 50k))
Soluzione prof:
SELECT ID FROM Impiegato I WHERE NOT EXISTS
(
SELECT * FROM Progetto Y WHERE Budget > 50000 AND NOT EXISTS
(
SELECT * FROM Partecipazione P WHERE I.ID = P.ID AND Y.Prog# = P.Prog#
)
)
Nessun commento:
Posta un commento