Leçon 8 / 9 — Chapitre 1: Jointures fondamentales
Éviter les colonnes ambiguës entre tables jointes
Quand deux tables jointes possèdent une colonne du même nom, l'utiliser sans préfixe dans un SELECT provoque une erreur d'ambiguïté : le moteur SQL ne sait pas de quelle table elle doit venir.
produits et commandes ont chacune une colonne id — celle de produits identifie un produit, celle de commandes identifie une commande, deux choses différentes.
SELECT id FROM produits p
INNER JOIN commandes c ON p.id = c.produit_id;
Cette requête échoue : id existe à la fois dans produits et dans commandes, sans préfixe pour lever le doute.
SELECT p.id AS produit_id, c.id AS commande_id
FROM produits p
INNER JOIN commandes c ON p.id = c.produit_id;
Préfixer chaque colonne ambiguë par son alias de table (p.id, c.id) résout le problème — et des alias de colonne (AS produit_id, AS commande_id) évitent en plus d'avoir deux colonnes appelées id dans le résultat.
À retenir :
- Une colonne présente dans plusieurs tables jointes doit être préfixée par un alias de table (
p.id) dès qu'elle apparaît dans la requête, sinon le moteur SQL renvoie une erreur d'ambiguïté. - Une colonne dont le nom n'existe que dans une seule des tables jointes n'a pas besoin de préfixe, mais en mettre un partout reste une habitude de lisibilité utile.
- Des alias de colonne distincts (
produit_id,commande_id) évitent en plus d'avoir deux colonnes de même nom dans le résultat final.
À vous de jouer : repérez, dans les requêtes des leçons précédentes de ce chapitre, une colonne qui aurait été ambiguë sans le préfixe p. ou c..
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