Chapprend · Bases de données

Relier les tables avec les jointures

Associer les lignes et comprendre les résultats d’une jointure.

Associer des données

Une jointure combine des colonnes de plusieurs tables à partir d’une condition de correspondance. Les alias raccourcissent les noms et lèvent les ambiguïtés.

SQL
SELECT co.id_commande, c.nom, co.montant
FROM commande co
INNER JOIN client c ON c.id_client = co.id_client;

Choisir les lignes conservées

JointureLignes présentes
INNER JOINSeulement les correspondances.
LEFT JOINToutes les lignes de gauche, avec NULL à droite si aucune correspondance.
RIGHT JOINToutes les lignes de droite, même sans correspondance à gauche.
FULL OUTER JOINToutes les lignes des deux côtés ; disponibilité selon le SGBD.
CROSS JOINToutes les combinaisons possibles.

Repérer les lignes sans relation

SQL
SELECT c.id_client, c.nom
FROM client c
LEFT JOIN commande co ON co.id_client = c.id_client
WHERE co.id_commande IS NULL;

Ici, id_commande est une clé non nulle : son absence dans le résultat indique qu’aucune commande ne correspond au client.

Pourquoi un client apparaît-il trois fois dans une jointure avec ses commandes ?

Il possède trois commandes. Le résultat contient une ligne par association client–commande, pas une ligne par client.