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 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.