Leçon 3 / 9 — Chapitre 3: Sous-requêtes
EXISTS : tester l'existence d'une correspondance
EXISTS teste si une sous-requête corrélée renvoie au moins une ligne — sans se soucier de laquelle ni de combien. Elle renvoie seulement vrai ou faux.
SELECT p.nom
FROM produits p
WHERE EXISTS (
SELECT 1 FROM commandes c WHERE c.produit_id = p.id
);
Pour chaque produit p, la sous-requête cherche une commande dont le produit_id correspond à p.id. Le SELECT 1 est une convention : peu importe la colonne renvoyée par la sous-requête, seule son existence compte, jamais son contenu.
Sur nos données, les produits avec au moins une commande sont Cahier, Savon, Jus et Dentifrice — 4 lignes, comme le IN de la première leçon de ce chapitre, mais construit différemment : ici, aucune liste de valeurs n'est calculée à l'avance, seule une existence est testée pour chaque produit.
À retenir :
EXISTS (sous-requête)renvoie vrai dès qu'au moins une ligne correspond, faux sinon — jamais de valeur intermédiaire.- Le contenu du SELECT à l'intérieur d'un EXISTS n'a aucune importance (
SELECT 1est une convention courante) : seule l'existence d'une ligne compte. - EXISTS est presque toujours écrit avec une sous-requête corrélée, sinon son résultat serait le même pour toutes les lignes externes.
À vous de jouer : remplacez SELECT 1 par SELECT c.quantite dans cette requête, et vérifiez que le résultat ne change pas.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 80 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès