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 :
NULLne correspond jamais à une autre valeur avec=, y compris dans une conditionON— même pas à un autreNULL.- Une ligne dont la colonne de jointure vaut
NULLne 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