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 l'attestation finale.

7 500 XOF / 11,43 € / 12,46 $

Débloquez les 87 leçons restantes de ce module

Pour vous communiquer où envoyer le paiement.

Moyen de paiement souhaité

Nous vous contactons pour le paiement — activé dès réception.