INNER JOIN
INNER JOIN associe les lignes de deux tables qui se correspondent, en général une clé étrangère et la clé primaire qu'elle référence. Les lignes sans correspondance disparaissent du résultat.
- jointure
- relation
- FK
- JOIN
- USING
Syntaxe
SELECT a.col, b.colFROM table_a aINNER JOIN table_b b ON b.id = a.b_id;Exemple
SELECT s.name AS eleve, c.name AS classeFROM students sINNER JOIN classes c ON c.id = s.class_idORDER BY c.name, s.name;-- Jeu de données : école-- La 4ème A, qui n'a aucun élève, n'apparaît pas.-- Résultat attendu :-- Emma Blanc | 5ème A-- Alice Leroy | 6ème A-- Bob Petit | 6ème A-- Clara Moreau | 6ème B-- David Roux | 6ème BÀ retenir
- JOIN seul signifie INNER JOIN. Quand les deux colonnes portent le même nom, USING (col) remplace ON a.col = b.col.
- On enchaîne autant de jointures que nécessaire : orders → order_items → products pour obtenir le détail d'une commande.
- Piège : joindre une table « un » à une table « plusieurs » multiplie les lignes. Un SUM calculé après une double jointure 1-N compte certaines valeurs plusieurs fois.
- Piège : oublier la condition ON (ou écrire FROM a, b sans WHERE) produit un produit cartésien de toutes les combinaisons.
Voir aussi
- LEFT JOINLEFT JOIN garde toutes les lignes de la table de gauche, avec ou sans correspondance à droite (les colonnes de droite valent alors NULL). Idéal pour compter des zéros ou repérer des absents.
- SELF JOINUne auto-jointure relie une table à elle-même grâce à deux alias. Elle sert pour les hiérarchies (employé et manager) et pour comparer des lignes d'une même table entre elles.
- FOREIGN KEYUne clé étrangère garantit qu'une valeur pointe vers une ligne qui existe dans une autre table, comme l'élève d'une absence. Elle empêche les références orphelines et encadre les suppressions.
- CROSS JOINCROSS JOIN combine chaque ligne de A avec chaque ligne de B, soit |A| × |B| lignes. Il sert à fabriquer une grille complète (clients × catégories, jours × produits) avant d'y joindre les faits.