Leçon 5.1 · Temps de lecture : ~8 min
Un SQL JOIN combine des lignes de deux tables ou plus via une colonne commune. Dans cette leçon, vous apprendrez le concept fondamental du JOIN, comment écrire une clause ON, pourquoi les alias de tables sont importants, et comment interroger des données liées dans la base Sakila pas à pas.
Dans les bases de données relationnelles, l'information est stockée sous forme de tables liées entre elles. Pour extraire des données pertinentes, il faut savoir les relier. L'opération JOIN en SQL sert à cela : elle permet de combiner des lignes de deux ou plusieurs tables selon une colonne commune.
Cette leçon pose les bases pour comprendre le JOIN, concept clé du travail avec des données relationnelles.
Un JOIN permet de fusionner des lignes de différentes tables en un seul jeu de résultats, selon une condition (souvent sur des colonnes clés).
Imaginez deux tables : customer et payment. La table payment possède une colonne customer_id qui indique quel client a effectué le paiement. Un JOIN permet de "coller" les lignes de ces deux tables pour afficher, par exemple, le nom du client à côté de chaque paiement.
Comment ça fonctionne :
ON, par exemple customer.customer_id = payment.customer_id.Visualisation :
Table A (customer) Table B (payment)
+----+-------+ +----+----------+
| id | nom | | id | montant |
+----+-------+ +----+----------+
| 1 | Ivan | <-----\ | 1 | 100.00 |
| 2 | Maria | \--->| 1 | 50.00 |
| 3 | Pierre| | 3 | 200.00 |
+----+-------+ +----+----------+
Les flèches montrent comment les lignes de la table payment trouvent leur client correspondant dans la table customer grâce à l'identifiant.
Voyons à quoi cela ressemble dans une requête SQL réelle (base Sakila).
Liste des clients et leurs paiements :
Cette requête joint les tables customer et payment pour afficher le prénom et nom du client à côté de chaque paiement.
SELECT
c.first_name,
c.last_name,
p.amount,
p.payment_date
FROM
customer AS c
JOIN
payment AS p ON c.customer_id = p.customer_id;
JOIN payment AS p indique qu'on joint la table payment.ON c.customer_id = p.customer_id définit la relation.c et p sont des alias pour raccourcir et clarifier la requête.Liste des films et leur langue :
On joint les tables film et language pour afficher le titre de chaque film et sa langue.
SELECT
f.title,
l.name AS language
FROM
film AS f
JOIN
language AS l ON f.language_id = l.language_id;
Ici, la relation s'établit via la clé language_id.
Points clés de cette leçon :
customer AS c) raccourcissent les requêtes et améliorent leur lisibilité.JOIN ne modifie pas les données d'origine ; il crée un jeu de résultats temporaire.INNER JOIN, LEFT JOIN, RIGHT JOIN et FULL JOIN.→ Leçon 5.2 : INNER JOIN — Combiner les lignes correspondantes
En SQL, JOIN seul est un raccourci pour INNER JOIN. Les deux produisent des résultats identiques. La forme explicite INNER JOIN est souvent préférée pour la clarté, surtout quand on mélange différents types de jointures dans une même requête.
Si aucune ligne ne satisfait la condition ON, un INNER JOIN renvoie un jeu de résultats vide. Aucune erreur n'est levée — la requête retourne simplement zéro lignes. Les autres types de jointures (LEFT JOIN, etc.) traitent les lignes sans correspondance différemment.
Oui. On peut chaîner plusieurs clauses JOIN dans une même requête, chacune avec sa propre condition ON. La base de données les traite de gauche à droite, en construisant progressivement le jeu de résultats.
Un JOIN revient à utiliser un identifiant commun pour croiser des informations entre deux tableurs. Par exemple, si un tableur liste des clients avec des ID et un autre liste des paiements avec l'ID client, un JOIN permet de voir le nom du client à côté de chaque paiement — sans dupliquer les données.
La clause ON spécifie la condition qui relie les lignes des deux tables. Sans elle (ou sans condition valide), la base produirait un produit cartésien — chaque ligne de la première table avec chaque ligne de la seconde — ce qui est rarement utile et potentiellement très volumineux.
Les alias de tables évitent toute ambiguïté lorsque deux tables ont des colonnes de même nom (p. ex. id). Ils permettent d'écrire c.id vs p.id, ce qui est clair pour le lecteur comme pour la base de données.