Jointure · 25 min
INNER JOIN : croiser deux tables sur une clé
On ne travaille jamais avec une seule table en pratique.
Contexte
On ne travaille jamais avec une seule table en pratique. Les étudiants sont dans une table, les notes dans une autre, les cours dans une troisième. Pour répondre à « quelle note a obtenu tel étudiant dans tel cours », il faut reunir ces tables grâce a leur cle commune. C'est le rôle de JOIN.
Explication
L'INNER JOIN retourne les lignes qui ont une correspondance dans les deux tables, selon une condition de jointure (generalement une cle primaire / cle etrangere).
Syntaxe : SELECT ... FROM t1 INNER JOIN t2 ON t1.cle = t2.cle;
Points cles :
- INNER JOIN = intersection (lignes presentes dans les deux tables)
- ON specifie la condition de jointure (egalite des cles)
- On peut chainer plusieurs INNER JOIN
- Si une ligne n'a pas de correspondance, elle est exclue
Exemple guidé
Objectifs : afficher chaque cours avec son professeur.
1. Table cours (id, nom, professeur_id), Table professeurs (id, prenom, nom) 2. Cle de jointure : cours.professeur_id = professeurs.id 3. On selectionne les colonnes pertinentes : c.nom, p.nom AS professeur
SELECT c.nom, p.nom AS professeur
FROM cours c
INNER JOIN professeurs p ON p.id = c.professeur_id
ORDER BY c.nom;
| nom | professeur |
|---|---|
| Algèbre linéaire | Kane |
| Analyse 2 | Kane |
| Bases de données | Ndiaye |
| Géométrie | Kane |
| Littérature moderne | Ba |
| Macroéconomie | Faye |
| Microéconomie | Faye |
| Mécanique classique | Mendy |
| Programmation Python | Ndiaye |
| Réseaux | Ndiaye |
À retenir
INNER JOIN = lignes presentes dans les deux tables selon la condition ON. Si une ligne n'a pas de correspondance, elle n'apparaît pas. On peut chainer plusieurs INNER JOIN pour croiser plus de deux tables. L'ordre des tables dans le FROM n'a pas d'impact sur le resultat d'un INNER JOIN.