SQL : Inner Join

Envie de savoir comment manipuler plusieurs tables de données grâce à SQL ? Découvrez la commande INNER JOIN à travers des exemples concrets.

Mis à jour le
15/5/2024

Dès lors qu’il s’agit d’interagir avec des bases de données relationnelles, SQL est le langage de référence des développeurs et des analystes de données. Les requêtes basiques de SQL permettent, entre autres, d’extraire des données issues des bases de données relationnelles. C’est par exemple le cas de la commande WHERE que vous avez pu découvrir dans l’un de nos précédents articles. Certes, mais comment faire lorsque l’on souhaite manipuler des données de deux tables distinctes ? Rassurez-vous, le langage SQL permet encore une fois de répondre à cette problématique ! Découvrez dans cet article la commande INNER JOIN qui vous permettra de fusionner plusieurs tables et d’exploiter toute la puissance des fonctionnalités du langage SQL  !

Qu’est-ce que la commande INNER JOIN ?

La commande INNER JOIN permet de lier des tables entre elles. Bien entendu, cela suppose que les deux tables que l’on souhaite lier possèdent une colonne identique (pas forcément par rapport à leurs dénominations, mais sur ce qu’elles représentent).

Pour dire les choses d’un point de vue plus théorique, cela signifie que la condition de sélection pour consolider deux tables se fera via la correspondance de la clé étrangère d’une table et la clé primaire d’une autre table.

La commande INNER JOIN est un type de jointure très utilisé. Il existe 2 façons d’exprimer une requête contenant la commande INNER JOIN.

La première syntaxe est la suivante :

SELECT * FROM tableA INNER JOIN tableB ON tableA.column1 = table2.column2

La seconde se construit d’après la structure suivante :

SELECT * FROM table1 INNER JOIN tableB WHERE tableA.column1 = tableB.column2

Détaillons maintenant le contenu de ces requêtes.

Pour rappel SELECT * est une commande (magique) de SQL qui vous permet de ne pas spécifier quelles colonnes du tableau vous souhaitez sélectionner pour toutes les conserver.

Cela vous épargne de devoir indiquer le nom de chacune des colonnes. Un gain de temps précieux lorsque les tables seront très volumineuses (ce qui est souvent le cas !).

Pour la première syntaxe, le bloc tableA INNER JOIN tableB indique que l’on souhaite fusionner les tables intitulées « tableA » et « tableB ».

Jusqu’ici rien de sorcier.

La subtilité réside dans le bloc ON tableA.column1 = table2.column2

Cette partie indique que l’on souhaite fusionner les tables autour de la colonne « column1 » de la table A et « column2 » de la table B. Rappelez-vous que ces deux colonnes doivent représenter la même chose sinon votre fusion n’a pas de sens !

Ainsi, la commande stipule qu’il faut uniquement sélectionner les lignes des tables tableA et tableB lorsque les données de colonne column1 de tableA sont également présentes dans la column2 de tableB.

La seconde syntaxe est quasiment similaire à la première. L’expression de la condition de fusion s’exprime à travers la commande WHERE.

Si vous êtes perdu, pas de panique ! DataBird propose une multitude de formations en ligne gratuites pour t’aider à acquérir rapidement toutes les compétences nécessaires pour devenir un super Data analyst.

Un exemple concret d’application de la commande INNER JOIN

Prenons un exemple afin de rendre la théorie plus palpable. Nous allons nous appuyer sur les deux tables suivantes :

La table intitulée « company » apporte des informations générales sur diverses entreprises.

Id Nom Nbr_employes Ville
1 DataBird 20 Paris
2 SQL Corporation 3000 New York
3 SQL Company 2500 Dubaï
4 Python Corp. 10 000 New York
5 SQL Père & Fils 7 Limoges
6 SGBDR Factory 250 Bangkok

Et la table intitulée « sales » indique les chiffres d’affaires de différentes entreprises.

Company_id Revenues Country
9 5 000 000 Chine
1 200 000 France
3 750 000 EAU
11 80 000 Thaïland
2 1 000 000 USA
5 500 000 Mexique

Nous souhaitons fusionner ces deux tableaux afin de compiler toutes les informations disponibles des entreprises en une seule table. Pour ce faire, nous allons exprimer la condition de sélection sur la colonne « Id » de la table « company » et « Company.id » de la table « sales ».

Notre requête sera alors :

SELECT Nom, Ville, Country, Revenues FROM company INNER JOIN sales ON company.Id = sales.Company_id

Et nous obtenons le résultat suivant :

Id Nom Ville Country Revenues
1 DataBird Paris France 200 000
2 SQL Corporation New York USA 1 000 000
3 SQL Company Dubaï EAU 750 000
5 SQL Père & Fils Limoges Mexique 500 000

Que pouvons-nous constater ?

  • On a bien la jointure entre les deux tables : les informations, initialement dispersées entre deux tables distinctes ont été consolidées en un seul tableau

  • Les entreprises caractérisées par les id 4, 6, 9 et 11 n’apparaissent pas dans cette nouvelle table puisque ces id ne sont pas présents dans les deux tableaux à la fois. À ce titre, la commande INNER JOIN se démarque de tous les autres types de JOIN puisqu’elle est la seule à fournir un ensemble de résultats minimal.

  • L’opération permet d’identifier certaines incohérences entre les tables ! Si votre niveau en géographie n’est pas trop mauvais, vous aurez sans doute été surpris de découvrir que Limoges se trouve désormais au Mexique. En réalité, sans vérification préalable de la véracité des informations dans chacune des tables, rien ne s’oppose à l’apparition de ce genre d’incohérences.

Nota bene : En pratique, sur la plupart des logiciels utilisés pour écrire du SQL, vous n’êtes pas obligé d’écrire INNER JOIN dans les requêtes et vous pouvez vous contenter d’écrire seulement JOIN. Pour débuter, il est toutefois recommandé de l’écrire en intégralité afin de ne pas faire de confusion avec les autres types de JOIN.



NATURAL JOIN, une alternative à INNER JOIN ?

Vous vous demandez peut-être s’il n’est pas possible de simplifier la syntaxe de la requête lorsque le nom des deux colonnes sur lesquelles on veut baser la fusion est strictement identique ?

La réponse est oui. Si les deux colonnes ont la même dénomination, il est possible d’utiliser NATURAL JOIN. Si l’on considère deux tables (« tableA » et « tableB ») reliées par une colonne du même nom, notre requête devient alors :

SELECT * FROM tableA NATURAL JOIN tableB

Ainsi, si l’on considère les deux tables suivantes :

La table « company » :

Id Nom Ville Country Revenues
1 DataBird Paris France 200 000
2 SQL Corporation New York USA 1 000 000
3 SQL Company Dubaï EAU 750 000
5 SQL Père & Fils Limoges Mexique 500 000

Et la table « sales » :

Id_Company Revenues Country
9 5 000 000 Chine
1 200 000 France
3 750 000 EAU
11 80 000 Thaïland
2 1 000 000 USA
5 500 000 Mexique

Alors on peut exprimer la requête :

SELECT * FROM sales NATURAL JOIN company

Qui nous renverra la table suivante :

Id Nom Ville Country Revenues
1 DataBird Paris France 200 000
2 SQL Corporation New York USA 1 000 000
3 SQL Company Dubaï EAU 750 000
5 SQL Père & Fils Limoges Mexique 500 000

Pour aller plus loin : le THETA JOIN

INNER JOIN est restrictif dans la mesure ou deux colonnes ne peuvent être comparées qu’à l’aide du signe d’égalité. Les jointures de types THETA JOIN permettent de s’affranchir de cette contrainte et offrent à l’utilisateur un choix beaucoup plus large d’opérateurs de comparaison.

Pour en savoir plus sur le THETA JOIN, découvrez cet article : Theta join, Self-join, Semi-join - SQL Server.

Conclusion

Vous étiez frustré de ne pouvoir manipuler qu’une table de données à la fois ? Grâce à la commande INNER JOIN vous pouvez désormais fusionner et manipuler plusieurs tables ! Super pratique, vous verrez !

Besoin de parfaire vos connaissances en langage SQL ? Suivez notre formation SQL de 6 semaines.

Pour aller plus loin, découvrez nos autres formations Data analyst afin de totalement tirer parti du langage SQL à la fois à temps plein à Paris, à distance en temps partiel ou encore à votre rythme.

Rejoignez-nous pour notre Journée Portes Ouvertes en live le 27 juin à 18h30
Explorez le bootcamp Databird ainsi que nos programmes de formation data.
Je m'inscris à l'évènement
Faites un premier pas dans la data avec nos cours gratuits
Démarrer

Nos derniers articles sur

SQL

Pour préparer l’année 2024, Databird vous propose une petite révision sur le requêtage SQL. Voici 6 requêtes à connaître obligatoirement en 2024 pour coder en SQL.
Le monde de la data vous intéresse et vous souhaitez en savoir plus ? Découvrez le langage SQL et ses applications dans l’exploitation de base de données.
Le NoSQL est une des bases de données les plus utilisées dans le Big Data. Sa simplicité et sa flexibilité en font un outil puissant pour les Data Analysts.
Difficulté :