PaliSkill
SQL Intermédiaire

Leçon 7 / 9 — Chapitre 1: Jointures fondamentales

Le piège des NULL dans une condition ON

Une condition de jointure comme ON p.id = c.produit_id compare deux valeurs avec =. Or en SQL, NULL ne correspond jamais à rien avec = — pas même à un autre NULL. NULL = NULL ne vaut pas « vrai », mais « inconnu », ce qui équivaut à faux dans une condition ON.

Conséquence concrète : si commandes.produit_id valait NULL pour une ligne (une commande sans produit renseigné), cette ligne ne correspondrait à aucun produit dans une jointure sur p.id = c.produit_id — même pas à un produit dont l'id serait lui aussi NULL, ce qui de toute façon n'arrive jamais pour une clé primaire.

Cette ligne à produit_id NULL ne disparaît pas forcément du résultat : avec un LEFT JOIN commandes → produits (commandes en table de gauche), elle apparaîtrait quand même, avec les colonnes de produits à NULL — comme n'importe quelle ligne de gauche sans correspondance. C'est un INNER JOIN, lui, qui l'exclurait complètement.

À retenir :

  • NULL ne correspond jamais à une autre valeur avec =, y compris dans une condition ON — même pas à un autre NULL.
  • Une ligne dont la colonne de jointure vaut NULL ne trouve donc jamais de correspondance, quelle que soit la table en face.
  • Elle peut malgré tout apparaître dans le résultat si elle est du côté « gardé » d'un LEFT/RIGHT/FULL JOIN — avec les colonnes de l'autre table à NULL.

À vous de jouer : pour chacune des 4 jointures de ce chapitre, déterminez si une ligne de commandes avec produit_id NULL apparaîtrait dans le résultat ou non.

🔒

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