Remplissez ce court formulaire pour candidater à la formation de votre choix. Notre équipe pédagogique vous contactera rapidement pour échanger sur votre parcours et vous accompagner dans la suite de votre inscription.
Vous avez deux tableaux sous les yeux : la liste de vos clients d'un côté, celle de leurs commandes de l'autre. Et la question qui revient toujours : comment savoir, d'un seul coup d'œil, quel client a commandé quoi ? La réponse tient en un mot, et c'est sans doute le concept le plus important de tout le SQL : la jointure.
Si vous débutez en SQL, les jointures sont l'étape qui fait peur. C'est normal : c'est là que tout se joue, et c'est aussi là que beaucoup décrochent. Pourtant, une fois le bon schéma mental en tête, c'est d'une logique limpide. Mon objectif dans ce guide : que vous ressortiez en ayant vraiment compris, pas juste mémorisé.
Je forme des Data Analysts chez DataSuits, organisme de formation Qualiopi certifié par l'Université Paris 1 Panthéon-Sorbonne, et les jointures, je les explique à longueur de journée. On va y aller pas à pas : ce qu'est une jointure, comment SQL relie deux tables, les 4 types de jointures avec des exemples concrets (et leur résultat affiché), un schéma visuel pour tout retenir, et les erreurs classiques à éviter.
Une jointure SQL (JOIN) permet de combiner les lignes de deux tables (ou plus) en s'appuyant sur une colonne qu'elles ont en commun, appelée la clé. Il existe quatre jointures principales : INNER JOIN (uniquement les correspondances), LEFT JOIN (tout à gauche + les correspondances), RIGHT JOIN (l'inverse) et FULL JOIN (tout des deux côtés). Maîtriser les jointures, c'est franchir l'étape qui sépare un débutant d'un vrai Data Analyst.
Commençons par le commencement. Dans une base de données, l'information n'est jamais entassée dans un seul grand tableau. Elle est rangée dans plusieurs tables séparées, chacune sur un sujet précis. Une table pour les clients, une autre pour les commandes, une autre pour les produits. C'est plus propre et plus efficace.
Le problème, c'est que les vraies questions touchent souvent plusieurs tables à la fois. « Quels clients ont passé une commande ce mois-ci ? » mélange la table des clients et celle des commandes. C'est là qu'intervient la jointure : elle va rassembler temporairement les informations de ces tables pour répondre à votre question.
L'image que j'utilise toujours en cours : imaginez deux listes papier. Sur la première, les noms de vos clients avec un numéro. Sur la seconde, des commandes, chacune portant le numéro du client qui l'a passée. Joindre, c'est poser les deux listes côte à côte et tracer un trait entre chaque commande et le bon client, grâce au numéro qu'elles partagent. SQL fait exactement ça, en une ligne.
Pour relier deux tables, SQL a besoin d'un point commun : une colonne présente dans les deux, qui sert de pont. On l'appelle la clé. Prenons nos deux tables d'exemple, qu'on va garder tout au long de l'article.
Regardez bien : dans la table commandes, la colonne client_id contient le numéro du client. C'est le pont. Le client_id de la commande correspond à l'id de la table clients. Cette colonne qui pointe vers une autre table, on l'appelle une clé étrangère, et l'id unique de chaque client une clé primaire. Pas besoin de retenir le vocabulaire par cœur, retenez l'idée : une colonne commune relie les deux tables.
En SQL, on indique ce pont avec le mot-clé ON. La phrase « relie chaque commande à son client là où le client_id de la commande est égal à l'id du client » s'écrit : ON clients.id = commandes.client_id. C'est le cœur de toute jointure. Une fois ce ON compris, le reste n'est que des variantes.
L'INNER JOIN (jointure interne) est la plus courante. Sa règle est simple : elle ne garde que les lignes qui ont une correspondance des deux côtés. Un client sans commande ? Il disparaît. Une commande sans client ? Pareil. On ne garde que ce qui « matche ».
Reprenons nos tables. On veut afficher le nom de chaque client à côté du produit qu'il a commandé. Voici la requête :
SELECT clients.nom, commandes.produit FROM clients INNER JOIN commandes ON clients.id = commandes.client_id;
Et voici ce que SQL renvoie. Lisez ligne par ligne :
Trois lignes, et un détail qui en dit long. Camille apparaît deux fois (elle a passé deux commandes), c'est normal. Mais surtout : Inès a disparu. Pourquoi ? Parce qu'elle n'a passé aucune commande. Comme l'INNER JOIN exige une correspondance des deux côtés, elle est exclue. Retenez ça : l'INNER JOIN, c'est l'intersection, le « commun » aux deux tables.
Maintenant, changeons de besoin. Et si je voulais la liste de tous mes clients, y compris ceux qui n'ont rien commandé ? L'INNER JOIN ne convient plus, puisqu'il fait disparaître Inès. Il me faut le LEFT JOIN (jointure gauche).
Sa règle : il garde toutes les lignes de la table de gauche (celle écrite après FROM), et y accroche les correspondances de la table de droite quand il y en a. Quand il n'y en a pas, il remplit le vide avec NULL (une case vide, « rien »). On change juste un mot dans la requête :
SELECT clients.nom, commandes.produit FROM clients LEFT JOIN commandes ON clients.id = commandes.client_id;
Le résultat change. Regardez la dernière ligne :
Cette fois, Inès est bien là. Comme elle n'a pas de commande, la colonne produit affiche NULL. C'est toute la puissance du LEFT JOIN : il ne perd personne du côté gauche. C'est aussi la jointure idéale pour répondre à « quels clients n'ont JAMAIS commandé ? » : il suffit ensuite de garder les lignes où le produit est NULL.
Les deux dernières sont faciles, maintenant que vous tenez le LEFT JOIN. Ce sont les mêmes idées, vues sous un autre angle.
Le RIGHT JOIN fait exactement l'inverse du LEFT : il garde toutes les lignes de la table de droite, et accroche les correspondances de gauche. En pratique, on l'utilise rarement, parce qu'on peut toujours réécrire un RIGHT JOIN en LEFT JOIN en inversant l'ordre des tables. La plupart des Data Analysts ne jurent que par le LEFT JOIN, plus naturel à lire.
Le FULL JOIN (ou FULL OUTER JOIN) combine les deux : il garde toutes les lignes des deux tables, qu'elles aient une correspondance ou non. Les trous sont remplis par des NULL des deux côtés. C'est utile pour comparer deux tables et repérer ce qui existe d'un côté mais pas de l'autre.
SELECT clients.nom, commandes.produit FROM clients FULL JOIN commandes ON clients.id = commandes.client_id;
Voici l'image qui vaut mille mots, et que tous les Data Analysts ont en tête. Chaque jointure correspond à une zone de deux cercles qui se chevauchent : le cercle de gauche, c'est la table de gauche ; celui de droite, la table de droite ; et la zone commune au milieu, ce sont les correspondances. La partie colorée est ce que la jointure garde.
Seulement le centre : les correspondances communes.
Tout le cercle gauche + le centre.
Tout le cercle droit + le centre.
Les deux cercles en entier, tout le monde.
Gardez ce schéma sous le coude. Quand vous hésitez sur la jointure à utiliser, posez-vous la question : « de quelle zone ai-je besoin ? » Le centre seul ? INNER. Tout un côté ? LEFT ou RIGHT. Tout ? FULL. Vous venez de résumer 90 % des jointures que vous écrirez dans votre carrière.
Les jointures ne sont qu'un début. Notre formation Data Analyst & IA vous forme au SQL, à Python, Power BI et l'IA sur des données réelles d'entreprise. Certificat de l'Université Paris 1 Panthéon-Sorbonne, mentors disponibles 7j/7.
Tout le monde fait ces erreurs au début, moi le premier. Les connaître à l'avance vous fera gagner des heures de galère. Voici les trois plus fréquentes que je vois en formation.
C'est l'erreur reine. Si vous écrivez une jointure sans préciser ON, SQL ne sait pas comment relier les tables, alors il associe chaque ligne de la première avec chaque ligne de la seconde. Résultat : 3 clients × 3 commandes = 9 lignes qui n'ont aucun sens. On appelle ça un produit cartésien. Si votre résultat a beaucoup trop de lignes, vérifiez votre ON en premier.
Sur un LEFT JOIN, attention : mettre un filtre sur la table de droite dans le WHERE peut, sans le vouloir, transformer votre LEFT JOIN en INNER JOIN (les NULL sont alors éliminés). Si vous voulez filtrer la table de droite tout en gardant tout le côté gauche, placez la condition dans le ON, pas dans le WHERE. C'est subtil, mais ça fait toute la différence.
Si une colonne porte le même nom dans les deux tables (par exemple id), SQL ne sait pas de laquelle vous parlez et renvoie une erreur d'ambiguïté. La solution : préfixez toujours par le nom de la table, comme clients.id. Encore mieux, utilisez des alias courts pour alléger l'écriture :
SELECT c.nom, o.produit FROM clients AS c LEFT JOIN commandes AS o ON c.id = o.client_id;
Ici, c remplace clients et o remplace commandes. C'est plus court, plus lisible, et c'est ce que font tous les professionnels. Prenez cette habitude dès maintenant.
La théorie, c'est bien, mais les jointures se comprennent vraiment en pratiquant. Voici comment progresser efficacement à partir d'ici.
Reprenez nos deux tables, créez-les dans un outil gratuit (DB Fiddle, SQLite en ligne) et testez chaque jointure pour voir le résultat changer sous vos yeux. C'est en modifiant les données et en observant que le déclic se produit. Ajoutez un client, une commande, et regardez comment chaque jointure réagit.
Dans la vraie vie, on joint souvent trois tables ou plus (clients, commandes, produits). Une fois les bases acquises, c'est juste un enchaînement de jointures, une par une. Si vous tenez le principe sur deux tables, vous tenez tout le reste. Pour réviser les fondations, notre guide complet pour maîtriser le SQL et notre formation SQL reprennent tout depuis le début.
Le SQL, et les jointures en particulier, sont la compétence socle du Data Analyst. Aucune analyse sérieuse ne s'en passe. Pour transformer ces bases en un véritable métier, notre formation Data Analyst & IA vous forme au SQL, à Python, Power BI et l'IA, sur des projets réels d'entreprise, avec un certificat de l'Université Paris 1 Panthéon-Sorbonne, des mentors 7j/7 et un accompagnement carrière. Pour découvrir d'autres tutoriels, parcourez aussi notre blog.
En 20 minutes avec un conseiller, vous validez si le métier de Data Analyst vous correspond, vous calculez votre financement (CPF, France Travail, OPCO) et vous repartez avec un plan clair. Service gratuit, sans engagement.
ON clients.id = commandes.client_id signifie « relie chaque commande à son client là où les identifiants correspondent ». Sans ON, SQL ne sait pas comment associer les lignes et crée un produit cartésien (toutes les combinaisons possibles), ce qui donne un résultat erroné. Le ON est donc le cœur de toute jointure.Formateur Data et responsable du parcours Data Analyst chez DataSuits, j'enseigne le SQL, Python et Power BI au quotidien. Mon obsession : rendre les concepts techniques limpides, en partant de zéro et en s'appuyant sur des exemples concrets. Les jointures, je les ai expliquées à des centaines d'apprenants, et je sais exactement où ça coince.
Vous voilà armé. Une jointure SQL relie deux tables grâce à une colonne commune, avec le mot-clé ON. L'INNER JOIN garde les correspondances, le LEFT JOIN conserve tout le côté gauche, le RIGHT JOIN fait l'inverse, et le FULL JOIN garde tout le monde. Le schéma des quatre zones et nos deux petites tables d'exemple vous suffisent pour répondre à la quasi-totalité de vos besoins.
Le seul vrai secret, maintenant, c'est la pratique. Recréez les exemples, modifiez les données, observez. En quelques séances, ce qui faisait peur deviendra un réflexe. Et le jour où vous enchaînez trois jointures sans réfléchir, vous saurez que vous pensez désormais comme un Data Analyst.
Pour transformer ces bases en métier, notre formation Data Analyst & IA à 2 990 € avec certificat de l'Université Paris 1 Panthéon-Sorbonne vous forme au SQL, à Python, Power BI et l'IA sur des données réelles. Prochaine étape : prenez rendez-vous avec un conseiller. 20 minutes pour bâtir votre projet. Service gratuit, sans engagement.
Le financement ne doit jamais être un frein à votre projet.
Chez DataSuits, nos conseillers pédagogiques vous accompagnent à chaque étape pour trouver la meilleure solution de financement adaptée à votre profil:
Remplissez ce court formulaire pour candidater à la formation de votre choix.
Notre équipe pédagogique vous contactera rapidement pour échanger sur votre parcours et vous accompagner dans la suite de votre inscription.



