Les jointures SQL expliquées : INNER, LEFT, RIGHT, CROSS (et la jointure avec virgule)
Published: 2026-02-04
Les jointures SQL vous permettent de combiner des lignes de deux tables en fonction de colonnes liées. Ce court tutoriel présente les quatre types de jointures principaux et explique pourquoi la jointure avec virgule est la même chose qu’un CROSS JOIN.
Données d’exemple
Nous utilisons deux tables dans tous les exemples :
Table employees :
| id | name | dept_id |
|---|---|---|
| 1 | Ava | 10 |
| 2 | Ben | 20 |
| 3 | Cara | NULL |
Table departments :
| dept_id | dept_name |
|---|---|
| 10 | Sales |
| 20 | Engineering |
| 30 | Support |
Essayez les jointures dans votre navigateur
Vous pouvez exécuter les requêtes d’exemple directement sur la page. Modifiez la requête et cliquez sur Run.
INNER JOIN
Ne renvoie que les lignes qui correspondent dans les deux tables.
Résultat : Ava/Sales, Ben/Engineering. Cara est exclue car elle n’a pas de service correspondant, et Support est exclu car il n’y a aucun employé dans le service 30.
LEFT JOIN (LEFT OUTER JOIN)
Renvoie toutes les lignes de la table de gauche, plus les lignes correspondantes de la table de droite. Les lignes non correspondantes du côté droit deviennent NULL.
Résultat : Ava/Sales, Ben/Engineering, Cara/NULL. Tous les employés sont conservés.
RIGHT JOIN (RIGHT OUTER JOIN)
Renvoie toutes les lignes de la table de droite, plus les lignes correspondantes de la table de gauche. Les lignes non correspondantes du côté gauche deviennent NULL.
Résultat : Ava/Sales, Ben/Engineering, NULL/Support. Tous les services sont conservés.
Remarque : De nombreux développeurs préfèrent réécrire
RIGHT JOINenLEFT JOINen inversant l’ordre des tables, pour une meilleure lisibilité et cohérence.
CROSS JOIN
Renvoie le produit cartésien (toutes les combinaisons) des deux tables.
Résultat : 3 × 3 = 9 lignes (chaque employé associé à chaque service).
Jointure avec virgule (syntaxe héritée)
La jointure avec virgule est équivalente à un CROSS JOIN. Elle liste les tables séparées par des virgules dans la clause FROM :
Cela produit le même produit cartésien que CROSS JOIN. Si vous ajoutez un filtre dans la clause WHERE, elle se comporte comme un INNER JOIN :
Bien que toujours valide, la syntaxe avec virgule est considérée comme dépassée, car elle mélange la logique de jointure avec les filtres et peut être plus difficile à lire. Il est préférable d’utiliser la syntaxe explicite JOIN ... ON.
DbGate : LEFT JOIN automatiques lors du dépliage des colonnes
Dans le navigateur de données de DbGate, le dépliage d’une colonne de clé étrangère génère automatiquement une requête avec un LEFT JOIN pour récupérer les données liées sans supprimer de lignes de la table principale. Cela permet de garder votre jeu de données de base intact tout en rendant immédiatement disponibles les champs associés.
Résumé
INNER JOINne conserve que les lignes correspondantes.LEFT JOINconserve toutes les lignes de la table de gauche.RIGHT JOINconserve toutes les lignes de la table de droite.CROSS JOINrenvoie toutes les combinaisons.- La jointure avec virgule est équivalente à
CROSS JOIN(et avec un filtreWHERE, elle devient unINNER JOIN).