Les jointures SQL expliquées : INNER, LEFT, RIGHT, CROSS (et la jointure par virgule)

Published: 2026-02-04

Les jointures SQL vous permettent de combiner des lignes provenant de deux tables sur la base de colonnes liées. Ce court tutoriel présente les quatre types de jointures principaux et explique pourquoi la jointure par virgule est la même chose qu’une 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 dans la page. Modifiez la requête et cliquez sur Run.

INNER JOIN

Retourne uniquement 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)

Retourne 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)

Retourne 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 JOIN en LEFT JOIN en inversant l’ordre des tables, pour une meilleure lisibilité et cohérence.

CROSS JOIN

Retourne le produit cartésien (toutes les combinaisons) des deux tables.

Résultat : 3 × 3 = 9 lignes (chaque employé associé à chaque service).

Jointure par virgule (syntaxe héritée)

La jointure par virgule est identique à une CROSS JOIN. Elle énumère 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 une 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 les champs liés immédiatement disponibles.

Résumé

  • INNER JOIN ne conserve que les lignes correspondantes.
  • LEFT JOIN conserve toutes les lignes de la table de gauche.
  • RIGHT JOIN conserve toutes les lignes de la table de droite.
  • CROSS JOIN retourne toutes les combinaisons.
  • La jointure par virgule est identique à CROSS JOIN (et avec un filtre WHERE, elle devient une INNER JOIN).