Jointures

INNER JOIN en SQL : relier clients et commandes

Reliez deux tables sans dupliquer les données grâce à une condition de jointure claire et vérifiable.

Équipe SQL.tn9 min
Illustration de tables clients et commandes reliées pour former un résultat commun

Pourquoi les données sont-elles séparées ?

Une base relationnelle évite de recopier les mêmes informations dans chaque ligne. La table clients conserve le nom et la ville de chaque client, tandis que la table commandes mémorise les achats.

Pour afficher le nom du client à côté d’une commande, SQL doit réunir ces deux sources au moment de la lecture. C’est le rôle d’une jointure.

Toutes les personnes, commandes et valeurs utilisées dans cet article sont fictives et servent uniquement à l’apprentissage.

La clé commune rend la relation possible

Dans clients, id_client identifie une personne de manière unique : c’est la clé primaire. Dans commandes, la même valeur indique qui a passé la commande : elle joue le rôle de clé étrangère.

La relation ne dépend donc pas du nom du client. Deux personnes peuvent avoir le même nom, alors que leur identifiant reste unique.

Structure simplifiée des deux tables
clients
- id_client  INTEGER  PRIMARY KEY
- nom        VARCHAR
- ville      VARCHAR

commandes
- id_commande  INTEGER  PRIMARY KEY
- id_client    INTEGER
- montant      DECIMAL

Écrire un INNER JOIN étape par étape

La requête part de clients, ajoute commandes, puis décrit la correspondance dans la clause ON. INNER JOIN conserve uniquement les lignes pour lesquelles cette correspondance existe.

Les alias c et co raccourcissent les références. Ils évitent aussi toute ambiguïté lorsque les deux tables possèdent une colonne portant le même nom.

  • FROM clients AS c définit la première source.
  • INNER JOIN commandes AS co ajoute la deuxième table.
  • ON c.id_client = co.id_client précise quelles lignes correspondent.
  • SELECT choisit seulement les colonnes utiles au résultat.
Relier chaque commande à son client
SELECT
  c.nom,
  co.id_commande,
  co.montant
FROM clients AS c
INNER JOIN commandes AS co
  ON c.id_client = co.id_client
ORDER BY co.montant DESC;

Lire et contrôler le résultat

Une commande associée à un client produit une ligne dans le résultat. Si un client possède trois commandes, son nom apparaît trois fois : ce ne sont pas des doublons accidentels, mais trois faits différents.

Avant d’ajouter des calculs, contrôlez quelques identifiants manuellement. Une jointure correcte doit préserver le sens métier des lignes et ne pas multiplier leur nombre sans raison.

Réflexe Data Analyst : comparez le nombre de lignes avant et après la jointure. Une hausse inattendue peut révéler une relation plusieurs-à-plusieurs ou une clé non unique.

INNER JOIN ou LEFT JOIN ?

INNER JOIN répond à la question « quelles commandes possèdent un client correspondant ? ». Un client sans commande disparaît du résultat.

LEFT JOIN conserve au contraire tous les clients de la table située à gauche. Les colonnes de commande valent NULL lorsqu’aucune commande ne correspond. Ce choix est utile pour trouver les clients inactifs.

Conserver aussi les clients sans commande
SELECT c.nom, co.id_commande
FROM clients AS c
LEFT JOIN commandes AS co
  ON c.id_client = co.id_client;

Cinq erreurs fréquentes avec les jointures

Une requête peut s’exécuter sans erreur technique tout en produisant un résultat métier incorrect. La condition ON mérite donc une relecture attentive.

  • Oublier la clause ON et créer toutes les combinaisons possibles.
  • Relier le nom du client au lieu de son identifiant stable.
  • Confondre id_client et id_commande.
  • Utiliser INNER JOIN alors que les lignes sans correspondance doivent être conservées.
  • Sélectionner toutes les colonnes avec * et rendre le résultat difficile à vérifier.

La méthode à retenir

Identifiez d’abord la question métier, puis la table qui représente chaque objet. Repérez ensuite la clé primaire et la clé étrangère, écrivez la condition ON et vérifiez quelques lignes.

Lorsque ce résultat est fiable, vous pouvez ajouter un filtre, un tri ou une agrégation. L’exercice clients-commandes vous permet d’appliquer immédiatement cette méthode.

Reliez maintenant deux tables.

Appliquez INNER JOIN à un cas clients-commandes avec une correction expliquée.

Faire l’exercice JOIN
INNER JOIN en SQL : relier deux tables simplement — SQL.tn