Sto cercando di imparare SQL e sto avendo difficoltà a capire le dichiarazioni EXISTS. Mi sono imbattuto in questa citazione su "esiste" e non capisco qualcosa:
Utilizzando l'operatore exist, la sottoquery può restituire zero, una o più righe e la condizione controlla semplicemente se la sottoquery ha restituito righe. Se guardi la clausola select della sottoquery, vedrai che è costituita da un singolo letterale (1); poiché la condizione nella query che la contiene deve solo sapere quante righe sono state restituite, i dati effettivi restituiti dalla sottoquery sono irrilevanti.
Quello che non capisco è come fa la query esterna a sapere quale riga sta controllando la sottoquery? Per esempio:
SELECT *
FROM suppliers
WHERE EXISTS (select *
from orders
where suppliers.supplier_id = orders.supplier_id);
Capisco che se l'ID del fornitore e la tabella degli ordini corrispondono, la sottoquery restituirà true e tutte le colonne dalla riga corrispondente nella tabella dei fornitori verranno emesse. Quello che non capisco è come la sottoquery comunica quale riga specifica (diciamo la riga con ID fornitore 25) deve essere stampata se viene restituito solo un vero o falso.
Mi sembra che non vi sia alcuna relazione tra la query esterna e la sottoquery.