Retour à la liste des articles Articles
10 minutes de lecture

Les JOINs SQL expliqués : 5 exemples SQL INNER JOIN pour les débutants

Vous cherchez une explication claire des jointures en SQL ? Consultez ces cinq exemples de JOINTS INNER en SQL !

En SQL, INNER JOINs peut être un peu difficile à maîtriser pour les débutants. Mais une fois que vous aurez commencé à les utiliser, vous découvrirez qu'elles sont très utiles ! Nous allons examiner cinq exemples de SQL INNER JOINs. Mais tout d'abord, examinons rapidement l'importance des JOINs.

Dans les bases de données relationnelles, les données sont organisées et stockées dans des tables. Chaque table représente un type d'information spécifique. Mais il arrive souvent que l'on doive analyser simultanément des données provenant de différentes tables. C'est là que les JOIN interviennent.

Nous vous encourageons à vous entraîner à joindre des tables en suivant notre cours interactif. Les jointures en SQL cours interactif. Il comprend 93 exercices couvrant les sujets suivants :

  • Types de JOIN SQL.
  • JOINs multiples.
  • Les auto-joints, c'est-à-dire la jonction d'une table avec elle-même.
  • JOINsnon équitables.

Alors, êtes-vous prêt à regarder quelques exemples de INNER JOIN? C'est parti !

Réunir des tables : Présentation des opérations SQL JOIN

Les jointures en SQL Les jointures SQL permettent de combiner les données de deux tables ou plus en fonction des valeurs de colonnes correspondantes. Par exemple, vous pouvez fusionner les informations relatives aux clients avec les commandes qu'ils ont passées ou relier chaque produit à ses fournisseurs.

Les jointures en SQL Les opérations SQL JOIN vous permettent de joindre des données provenant de différentes tables et d'en extraire des informations utiles pour votre cas d'utilisation spécifique. Consultez l'aide-mémoire SQL JOIN pour avoir une vue d'ensemble des différents types de JOIN.

Un INNER JOIN en SQL combine des lignes de plusieurs tables en faisant correspondre les valeurs de leurs colonnes communes. Lorsque vous appliquez une INNER JOIN pour relier les données des clients à leurs commandes correspondantes, vous obtenez une liste des clients qui ont passé au moins une commande.

Exemples de INNER JOIN en SQL pour les débutants

Outre INNER JOIN, SQL propose également d'autres types de jointures : LEFT JOIN, RIGHT JOIN, et FULL JOIN. Ces jointures sont appelées OUTER JOINs. Contrairement à INNER JOIN, une opération OUTER JOIN peut lister les lignes des deux tables, même s'il n'y a pas de correspondance.

Exemples de INNER JOIN en SQL pour les débutants

Prenons un exemple pour mieux comprendre la nature des SQL INNER JOINs.

Voici la table customers qui stocke les informations sur les clients :

customer_idfirst_namelast_nameemail
1CoryCastillocc@email.com
2ElliePottsep@email.com
3JackGreerjg@email.com

Et voici la table orders qui stocke toutes les commandes passées par les clients :

order_idcustomer_idorder_dateorder_amount
2716/6/2023100.00
2827/7/2023150.00
2918/8/202320.00

La colonne commune (en rose) sur laquelle les tableaux customers et orders sont reliées est la colonne customer_id.

Voici maintenant la requête :

SELECT 
  c.customer_id, 
  c.email, 
  o.order_date, 
  o.order_amount
FROM customers AS c
INNER JOIN orders AS o
ON c.customer_id = o.customer_id;

Cette requête joint la table customers (alias AS c) et la table orders (alias AS o). Ces alias de table fournissent un moyen clair d'informer la base de données de la table source de chaque colonne (en utilisant la syntaxe table_alias.column_name).

Ces alias sont utilisés dans la clause ON pour établir la colonne de jonction des tables. Nous les utilisons également dans l'instruction SELECT, où deux colonnes sont sélectionnées dans la table customers (c.customer_id and c.email) et deux autres dans la table orders (o.order_date and o.order_amount).

Voici le résultat de la requête :

customer_idemailorder_dateorder_amount
1cc@email.com6/6/2023100.00
2ep@email.com7/7/2023150.00
1cc@email.com8/8/202320.00

Vous pouvez observer que le client dont l'ID est 3 n'apparaît pas dans le tableau résultant. Ce client n'a pas encore passé de commande ; il n'y a donc pas d'enregistrement correspondant dans la table. orders dans la table.

Le mot-clé INNER JOIN est interchangeable avec le mot-clé JOIN. En d'autres termes, lorsque vous utilisez JOIN, la base de données l'interprète comme une notation abrégée pour INNER JOIN.

Pour en savoir plus sur les INNER JOIN, consultez notre article intitulé Qu'est-ce qu'une jointure interne en SQL ?

Exemples pratiques de INNER JOIN en SQL

Explorons quelques exemples SQL INNER JOIN adaptés aux débutants. Avant de vous lancer dans les exemples, consultez cet article sur la façon de pratiquer Les jointures en SQL.

Exemple 1 : Lier des livres à des auteurs

Vous disposez de deux tables qui stockent des informations sur les livres et les auteurs. Joignez ces tables pour obtenir la liste des livres et de leurs auteurs.

Voici le tableau books table :

book_idtitlepublication_yearauthor_id
1Frankenstein181822
2The Time Machine189523
3The Martian201124
42001: A Space Odyssey196825
5Dune196526

La colonne book_id identifie chaque livre de manière unique. La colonne author_id attribue un auteur à chaque livre.

Voici le tableau authors tableau :

author_idauthor_name
22Mary Shelley
23H. G. Wells
24Andy Weir
25Arthur C. Clarke
26Frank Herbert

La colonne author_id identifie chaque auteur de manière unique. La colonne author_name stocke les noms complets des auteurs.

Si vous souhaitez voir les titres des livres et les noms de leurs auteurs, vous pouvez joindre ces tableaux sur la base de leur colonne commune (la colonne author_id dans les deux tableaux). Il suffit de sélectionner title dans books et author_name dans authors:

SELECT 
  b.title, 
  a.author_name
FROM books AS b
INNER JOIN authors AS a
ON b.author_id = a.author_id;

Voici le tableau obtenu :

titleauthor_name
FrankensteinMary Shelley
The Time MachineH. G. Wells
The MartianAndy Weir
2001: A Space OdysseyArthur C. Clarke
DuneFrank Herbert

Veuillez noter que chaque livre est associé à un auteur et que chaque auteur est associé à un livre, car il n'y a pas de valeurs en double dans la colonne commune author_id. Examinez l'exemple suivant pour voir ce qui se passe si la colonne commune contient des valeurs en double.

Exemple 2 : affectation de produits à des catégories

Vous disposez de deux tables qui stockent les produits et les catégories de produits. Joignez ces tables pour obtenir la liste des produits et de leurs catégories.

Voici le tableau products table :

product_idproduct_namecategory_id
1Apple22
2Orange22
3Potato23
4Carrot23
5Chocolate24

La colonne product_id identifie chaque produit de manière unique. La colonne category_id attribue une catégorie à chaque produit.

Voici le tableau categories tableau :

category_idcategory_name
22Fruits
23Vegetables
24Snacks

La colonne category_id identifie chaque catégorie de manière unique. La colonne category_name stocke les noms complets des catégories.

Si vous voulez voir les produits et leurs catégories, vous pouvez joindre ces tables sur la base de leur colonne commune, qui est la colonne category_id. Voici la requête :

SELECT 
  p.product_name, 
  c.category_name
FROM products AS p
INNER JOIN categories AS c
ON p.category_id = c.category_id;

Voici le tableau résultant :

product_namecategory_name
AppleFruits
OrangeFruits
PotatoVegetables
CarrotVegetables
ChocolateSnacks

Les catégories dont les ID sont 22 et 23 sont affectées à deux produits chacune ; leurs noms apparaissent deux fois dans le tableau de sortie.

Exemple 3 : Liste des médecins et des patients portant le même prénom

Vous disposez de deux tables qui stockent des informations sur les médecins et les patients. Joignez ces tables pour obtenir la liste des médecins et des patients qui partagent le même prénom.

Voici le tableau doctors table :

doctor_idfirst_namelast_name
1SamanthaMonroe
2MelvinFerrell
3AlbieBlake
4RoseBernard
5LouiPeterson

La colonne doctor_id identifie chaque médecin de manière unique. Les deux autres colonnes contiennent les noms et prénoms des médecins.

Et voici le tableau patients tableau :

patient_idfirst_namelast_name
23BenWoodward
24SamanthaThomson
25KateDonovan
26AlbieVasquez
27LouiChen

La colonne patient_id identifie chaque patient de manière unique. Les deux autres colonnes contiennent les noms et prénoms des patients.

Si vous voulez voir la liste des médecins et des patients qui partagent le même prénom, vous pouvez joindre ces tableaux en vous basant sur la colonne first_name.

SELECT d.*, p.*
FROM doctors AS d
INNER JOIN patients AS p
ON d.first_name = p.first_name;

Veuillez noter que d.* définit toutes les colonnes de la table doctors et p.* définit toutes les colonnes de la table patients table.

Voici le tableau résultant :

doctor_idfirst_namelast_namepatient_idfirst_namelast_name
1SamanthaMonroe24SamanthaThomson
3AlbieBlake26AlbieVasquez
5LouiPeterson27LouiChen

Grâce à l'opération INNER JOIN, vous ne pouvez lister que les paires de médecins et de patients dont les prénoms sont identiques.

Exemple 4 : Associer des personnes à des appartements convenables

Vous disposez de deux tables qui stockent des informations sur les appartements disponibles à la location et sur les personnes qui recherchent des appartements correspondant à leur fourchette de prix. Associez ces tables pour voir quels appartements peuvent être loués par telle ou telle personne.

Voici le tableau apartments table :

apartment_idrent
11000
2700
3500

La colonne apartment_id identifie chaque appartement de manière unique. La colonne rent indique le montant du loyer mensuel.

Et voici la table persons tableau :

person_idemailmax_rent
23ab@email.com900
24cd@email.com600
25ef@email.com3000

La colonne person_id identifie chaque personne qui cherche un appartement à louer. La colonne email stocke leurs adresses électroniques et la colonne max_rent stocke le montant maximum du loyer mensuel qu'ils sont en mesure de payer pour l'appartement.

Si vous souhaitez savoir quels appartements peuvent être loués par quelle personne, vous pouvez relier ces tables sur la base des colonnes rent et max_rent:

SELECT 
  p.person_id, 
  p.email,
  a.apartment_id, 
  a.rent AS apartment_rent
FROM apartments AS a
INNER JOIN persons AS p
ON a.rent < p.max_rent;

Ici, la correspondance doit être établie entre la colonne "loyer" du tableau apartments et la colonne max_rent de la table personsrent < max_rent.

Voici le tableau résultant :

person_idemailapartment_idapartment_rent
25ef@email.com11000
23ab@email.com2700
25ef@email.com2700
23ab@email.com3500
24cd@email.com3500
25ef@email.com3500

En utilisant la clause ON avec la condition contenant le signe <, plusieurs lignes de la table ont été affectées à plusieurs lignes de la table. apartments ont été affectées à plusieurs lignes du tableau persons et vice versa. Vous pouvez ainsi voir quels appartements conviennent à telle ou telle personne.

Exemple 5 : Jointure des tables Continents, Pays et Villes

Cette fois, vous disposez de trois tables qui stockent des informations sur les continents, les pays et les villes. Joignez ces tables pour savoir quelle ville appartient à quel pays et quel pays appartient à quel continent.

Voici le tableau continents qui contient tous les continents :

continent_idcontinent_name
1Asia
2Africa
3North America
4South America
5Antarctica
6Europe
7Australia

La colonne continent_id identifie chaque continent de manière unique. La colonne continent_name contient le nom complet du continent.

Voici le tableau countries qui stocke les pays sélectionnés :

country_idcountry_namecontinent_id
23United States3
24Brazil4
25South Africa2
26Japan1
27Poland6

La colonne country_id identifie chaque pays de manière unique. La colonne country_name stocke son nom complet. La colonne continent_id stocke le continent sur lequel le pays est situé.

Voici le tableau cities qui stocke les villes sélectionnées :

city_idcity_namecountry_id
33Rio de Janeiro24
34New York23
35Tokyo26
36Warsaw27
37Cape Town25

La colonne city_id identifie chaque ville de manière unique. La colonne city_name stocke son nom complet. La colonne country_id stocke le pays dans lequel la ville est située.

Si vous voulez voir quelles villes, quels pays et quels continents vont ensemble, vous pouvez relier ces trois tableaux sur la base de leurs colonnes communes :

SELECT 
  cont.continent_name, 
  coun.country_name, 
  ci.city_name
FROM continents AS cont
INNER JOIN countries AS coun
ON cont.continent_id = coun.continent_id
INNER JOIN cities AS ci
ON coun.country_id = ci.country_id;

Le tableau continent est reliée à la table countries sur leur colonne commune (continent_id). Et le tableau countries est jointe à la table cities sur leur colonne commune (country_id).

Voici le tableau résultant :

continent_namecountry_namecity_name
AsiaJapanTokyo
AfricaSouth AfricaCape Town
North AmericaUnited StatesNew York
South AmericaBrazilRio de Janeiro
EuropePolandWarsaw

Les trois tables sont jointes sur leurs colonnes communes et l'instruction SELECT répertorie les noms des continents, des pays et des villes en fonction de la jointure entre les colonnes ID.

Consultez cet article sur la jointure de trois tables ou plus en SQL pour obtenir d'autres exemples de jointures entre plusieurs tables.

À vous de pratiquer les exemples de jointures internes en SQL

Tout au long de cet article, nous avons approfondi les subtilités de INNER JOIN en SQL, des concepts de base aux scénarios plus avancés. Nous avons utilisé diverses conditions JOIN et même joint trois tables. Comme nous l'avons vu, la puissance de INNER JOIN réside dans sa capacité à relier de manière transparente des ensembles de données, ce qui nous permet d'extraire des informations précieuses.

Avez-vous besoin d'autres exemples SQL INNER JOIN? Essayez tous les types de JOIN en suivant notre cours sur Les jointures en SQL que nous avons mentionné plus haut. Vous obtiendrez tous les exercices pratiques dont vous avez besoin pour vous sentir à l'aise dans l'écriture de JOINs.

Bonne chance !