PaliSkill
SQL Intermédiaire

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 JOIN suivi de WHERE colonne_de_droite IS NULL isole les lignes de la table de gauche sans aucune correspondance à droite.
  • Tester IS NULL sur 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 IN ou NOT 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