Leçon 4 / 9 — Chapitre 3: Sous-requêtes
NOT EXISTS : tester l'absence de correspondance
NOT EXISTS inverse EXISTS : elle renvoie vrai quand la sous-requête corrélée ne trouve aucune ligne.
SELECT p.nom
FROM produits p
WHERE NOT EXISTS (
SELECT 1 FROM commandes c WHERE c.produit_id = p.id
);
Cette requête garde les produits pour lesquels aucune commande ne correspond : Stylo et Biscuits, soit 2 lignes — exactement le résultat obtenu par LEFT JOIN + WHERE ... IS NULL au chapitre précédent. Ce sont deux façons différentes d'exprimer la même idée, « aucune correspondance » : NOT EXISTS l'exprime directement, sans avoir besoin d'une jointure préalable.
À retenir :
NOT EXISTS (sous-requête)renvoie vrai quand la sous-requête corrélée ne trouve aucune ligne pour la ligne externe en cours.NOT EXISTSrépond directement à « quelles lignes n'ont aucune correspondance ? », sans passer par une jointure.- Ce résultat correspond à celui obtenu par LEFT JOIN + IS NULL — deux techniques différentes pour la même question.
À vous de jouer : sur ces mêmes données, écrivez la version LEFT JOIN + IS NULL équivalente à ce NOT EXISTS, et vérifiez qu'elle renvoie le même résultat.
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