Leçon 8 / 9 — Chapitre 2: Jointures avancées et combinées
LEFT JOIN + IS NULL : trouver les lignes sans correspondance
Combiner LEFT JOIN avec WHERE ... IS NULL sur une colonne de la table de droite est une technique courante pour isoler les lignes de la table de gauche qui n'ont aucune correspondance.
SELECT p.nom
FROM produits p
LEFT JOIN commandes c ON p.id = c.produit_id
WHERE c.id IS NULL;
LEFT JOIN garde tous les produits, avec c.id à NULL pour ceux sans commande. WHERE c.id IS NULL ne garde alors que ces lignes-là — les produits jamais commandés. Sur nos données : Stylo et Biscuits, soit 2 lignes.
Cette combinaison répond à une question qu'un INNER JOIN seul ne peut pas poser : « quelles lignes n'ont aucune correspondance ? », plutôt que « quelles lignes en ont une ».
À retenir :
LEFT JOINsuivi deWHERE colonne_de_droite IS NULLisole les lignes de la table de gauche sans aucune correspondance à droite.- Tester
IS NULLsur une colonne de la table de droite (jamais de la gauche) est essentiel : une colonne de gauche n'est jamais NULL du simple fait de l'absence de correspondance. - Cette technique remplace souvent une sous-requête
NOT INouNOT EXISTS, vues dans un chapitre à venir.
À vous de jouer : combien de lignes retournerait cette même requête si on remplaçait WHERE c.id IS NULL par WHERE c.id IS NOT NULL ?
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