Ho appena finito la lezione di Stanford su SQL
(del Prof. Jennifer Widom). Tuttavia ho sviluppato una confusione sull'uso della clausola EXISTS
. Ho pensato che fosse proprio come una condizione e un'espressione in modo che se fosse vero, la query sopra procederà (molto simile al% booleano% co_de). Quindi avendo un leggero dubbio riguardo a questa domanda:
Passenger = {pid, pname, Age}
Reservation = {pid, class, tid}
e le tabelle vengono popolate con alcuni dati e viene eseguita la seguente query:
SELECT pid
FROM Reservation
WHERE class = 'AC' AND EXISTS
(SELECT * FROM Passenger WHERE age > 65 AND Passenger.pid = Reservation.pid)
Ora la cosa che mi turba è che ho pensato che l'uso di AND
è semplicemente che la query principale sopra procede se la sottoquery restituisce qualcosa. Così come la subquery stava restituendo qualcosa, mi aspettavo che la query restituisse tutti i PID in cui EXISTS
. Non pensavo che fosse stata eseguita tupla dalla tupla. Quindi, come rimuovere questa confusione?