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.
ON.customer AS c) améliore la lisibilité.JOIN ne modifie pas les données originales ; il crée un jeu de résultats temporaire.Dans les prochaines leçons, nous explorerons les différents types de jointures (INNER JOIN, LEFT JOIN, RIGHT JOIN) et leur impact sur le résultat final.