SQL INNER JOIN (Français)

Résumé: dans ce didacticiel, vous apprendrez à interroger les données de plusieurs tables à l’aide de l’instruction SQL INNER JOIN.

Dans le didacticiel précédent, vous avez appris à interroger des données à partir d’une seule table à l’aide de l’instruction SELECT. Cependant, vous souhaitez souvent interroger les données de plusieurs tables pour disposer d’un jeu de résultats complet pour l’analyse. Pour interroger les données de plusieurs tables, vous utilisez des instructions de jointure.

SQL fournit plusieurs types de jointures telles que la jointure interne, les jointures externes (jointure externe gauche ou jointure gauche, jointure externe droite ou jointure droite et jointure externe complète ) et auto-jointure. Dans ce tutoriel, nous allons vous montrer comment utiliser la clause INNER JOIN.

Syntaxe SQL INNER JOIN

Ce qui suit illustre INNER JOIN syntaxe pour joindre deux tables:

1
2
3
4
5

SELECT
colonne1, colonne2
FROM
table_1
INNER JOIN table_2 ON join_condition;

Examinons la syntaxe ci-dessus plus en détail:

  • Les table_1 et table_2 sont appelés tables jointes.
  • Pour chaque ligne dans le table_1, la requête trouve la ligne correspondante dans le table_2 qui remplit la condition de jointure. Si la ligne correspondante est trouvée, la requête renvoie une ligne qui contient les données des deux tables. Sinon, il examine la ligne suivante de table_1 et ce processus se poursuit jusqu’à ce que toutes les lignes de table_1 soient examinées.

Pour joindre plus de deux tables, la même logique s’applique.

Exemples SQL INNER JOIN

SQL INNER JOIN – exemple d’interrogation de données à partir de deux tables

Dans cet exemple, nous utiliserons les tables products et categories dans la base de données exemple. L’image suivante illustre le diagramme de la base de données.

Dans le diagramme ci-dessus:

  • Une catégorie peut avoir plusieurs produits.
  • Un produit appartient à une et une seule catégorie.

Par conséquent, il existe une relation plusieurs-à-un entre les lignes de categories table et lignes dans la table products. Le lien entre les deux tables est la colonne categoryid.

Nous devons interroger les données suivantes des deux tables:

  • productID, productName du tableau products.
  • categoryName de la table categories.

La requête suivante récupère les données des deux tables:

1
2
3
4
5
6

SELECT
productID, productName, categoryName
FROM
produits
INNER JOIN
catégories ON categories.categoryID = products.categoryID;

La condition de jointure est spécifiée dans la clause INNER JOIN après le mot clé ON comme expression:

1

categories.categoryID = products.categoryID

Pour chaque ligne du products, la requête trouve une ligne correspondante dans la table categories qui a le même categoryid. S’il y a une correspondance entre deux lignes dans les deux tables, il renvoie une ligne qui contient les colonnes spécifiées dans la clause SELECT, c’est-à-dire l’ID du produit, le nom du produit et le nom de la catégorie; sinon, il vérifie la ligne suivante dans la table products pour trouver la ligne correspondante dans la table categories. Ce processus se poursuit jusqu’à ce que la dernière ligne de la table products soit examinée.

SQL INNER JOIN – interrogation des données de trois tables

Nous pouvons utiliser les mêmes techniques pour joindre trois tables.La requête suivante sélectionne productID, productName, categoryName et supplier des tableaux products, categories et suppliers:

1
2
3
4
5
6
7
8
9
10
11

SELECT
productID,
productName,
categoryName,
companyName AS fournisseur
FROM
produits
INNER JOIN
catégories ON catégories. categoryID = products.categoryID
INNER JOIN
fournisseurs SUR fournisseurs.supplierID = products.supplierID

JOIN INNER SQL implicite

Il existe une autre forme de INNER JOIN appelée jointure interne implicite comme indiqué ci-dessous:

1
2
3
4
5
6
7

SELECT
colonne1, colonne2
FROM
table_1,
table_2
WHERE
join_condition;

Dans ce formulaire, vous spécifiez toutes les tables jointes dans la clause FROM et placez la condition de jointure dans la clause WHERE de l’instruction SELECT. Nous pouvons réécrire l’exemple de requête ci-dessus en utilisant le INNER JOIN implicite comme suit:

1
2
3
4
5
6
7

SELECT
productID, productName, categoryName
FROM
produits,
catégories
WHERE
products.categoryID = categories.categoryID;

Visualisez INNER JOIN en utilisant le diagramme de Venn

Write a Comment

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *