SQL INNER JOIN et LEFT JOIN : Explication des différences et des cas d’utilisation

Les opérations INNER JOIN et LEFT JOIN en SQL sont couramment utilisées dans les requêtes de bases de données. Ces opérations, indispensables pour l’intégration des données et la personnalisation des résultats de recherche, ont des caractéristiques distinctes et sont utilisées dans des contextes différents. Cet article explique en détail les différences entre INNER JOIN et LEFT JOIN, avec des exemples concrets et une discussion sur les cas d’utilisation appropriés.

Sommaire

Qu’est-ce que INNER JOIN

INNER JOIN est une opération SQL utilisée pour combiner deux tables ou plus. Cette opération inclut uniquement les enregistrements qui correspondent à la condition de jointure dans le jeu de résultats. Par exemple, lorsqu’il existe deux tables, INNER JOIN renvoie uniquement les lignes qui correspondent à une clé commune présente dans les deux tables. Cela permet d’extraire uniquement les données pertinentes. INNER JOIN est particulièrement utile pour clarifier les relations entre les tables et exclure les données non pertinentes.

Exemple d’utilisation d’INNER JOIN

Voici un exemple d’utilisation d’INNER JOIN à l’aide d’une requête SQL. Nous utiliserons les tables customers pour gérer les informations des clients et orders pour gérer les informations des commandes.

Exemple : Jointure entre clients et commandes

La requête SQL suivante combine les informations des clients et leurs commandes. La clé commune utilisée est l’ID client (customer_id).

SELECT 
    customers.customer_id,
    customers.customer_name,
    orders.order_id,
    orders.order_date
FROM 
    customers
INNER JOIN 
    orders
ON 
    customers.customer_id = orders.customer_id;

Cette requête combine les enregistrements des colonnes customer_id des tables customers et orders, et renvoie un jeu de résultats incluant l’ID client, le nom du client, l’ID de commande et la date de commande. Grâce à INNER JOIN, les clients sans commande et les commandes sans client ne sont pas inclus dans le jeu de résultats.

Qu’est-ce que LEFT JOIN

LEFT JOIN est une opération SQL utilisée pour combiner deux tables ou plus, en incluant tous les enregistrements de la table de gauche dans le jeu de résultats, ainsi que les enregistrements correspondants de la table de droite. Si aucun enregistrement correspondant n’existe dans la table de droite, la requête retourne des valeurs NULL pour cette partie. LEFT JOIN est principalement utilisé lorsque l’on souhaite conserver toutes les données de la table de gauche tout en ajoutant des informations de la table de droite.

Exemple d’utilisation de LEFT JOIN

Voici un exemple d’utilisation de LEFT JOIN à l’aide d’une requête SQL. Nous utiliserons à nouveau les tables customers et orders comme exemple.

Exemple : Jointure entre clients et commandes

La requête SQL suivante combine tous les clients avec leurs commandes. La clé commune utilisée est l’ID client (customer_id).

SELECT 
    customers.customer_id,
    customers.customer_name,
    orders.order_id,
    orders.order_date
FROM 
    customers
LEFT JOIN 
    orders
ON 
    customers.customer_id = orders.customer_id;

Cette requête combine tous les enregistrements de la table customers et ceux de la table orders dont la colonne customer_id correspond. Elle renvoie un jeu de résultats incluant l’ID client, le nom du client, l’ID de commande et la date de commande. Grâce à LEFT JOIN, même les clients sans commande sont inclus dans le jeu de résultats, et dans ce cas, les informations sur les commandes sont retournées sous forme de valeurs NULL.

Différences entre INNER JOIN et LEFT JOIN

Pour comprendre la différence entre INNER JOIN et LEFT JOIN, nous allons illustrer le comportement de chacune des opérations.

Comportement de INNER JOIN

INNER JOIN ne renvoie que les enregistrements communs aux deux tables. Par exemple, lorsque nous combinons les tables customers et orders, seules les lignes où l’ID client est présent dans les deux tables sont renvoyées.

customers table:
+-------------+----------------+ 
| customer_id | customer_name  | 
+-------------+----------------+ 
| 1           | Alice          | 
| 2           | Bob            | 
| 3           | Charlie        | 
+-------------+----------------+ 

orders table:
+-------------+----------+------------+ 
| order_id    | customer_id | order_date | 
+-------------+----------+------------+ 
| 101         | 1        | 2023-01-10 | 
| 102         | 3        | 2023-01-15 | 
+-------------+----------+------------+ 

Résultat de INNER JOIN:
+-------------+----------------+----------+------------+ 
| customer_id | customer_name  | order_id | order_date | 
+-------------+----------------+----------+------------+ 
| 1           | Alice          | 101      | 2023-01-10 | 
| 3           | Charlie        | 102      | 2023-01-15 | 
+-------------+----------------+----------+------------+

Comportement de LEFT JOIN

LEFT JOIN renvoie tous les enregistrements de la table de gauche et, si des enregistrements correspondants existent dans la table de droite, ils sont ajoutés. Si aucune correspondance n’existe dans la table de droite, les valeurs de cette dernière seront NULL.

Résultat de LEFT JOIN:
+-------------+----------------+----------+------------+ 
| customer_id | customer_name  | order_id | order_date | 
+-------------+----------------+----------+------------+ 
| 1           | Alice          | 101      | 2023-01-10 | 
| 2           | Bob            | NULL     | NULL       | 
| 3           | Charlie        | 102      | 2023-01-15 | 
+-------------+----------------+----------+------------+

Ainsi, INNER JOIN renvoie uniquement les enregistrements communs aux deux tables, tandis que LEFT JOIN renvoie tous les enregistrements de la table de gauche et retourne des valeurs NULL pour ceux de la table de droite qui ne correspondent pas.

Quand utiliser INNER JOIN et LEFT JOIN

Le choix entre INNER JOIN et LEFT JOIN dépend des données et des objectifs recherchés. Examinons de plus près les situations où chacun d’eux est approprié.

Quand utiliser INNER JOIN

INNER JOIN est approprié lorsque seules les données communes aux deux tables sont nécessaires. Il est utilisé dans les cas suivants :

Obtenir les données correspondantes entre clients et commandes

INNER JOIN est utilisé lorsqu’il est nécessaire d’obtenir les informations des clients ayant passé une commande. Par exemple, pour obtenir les informations des clients ayant acheté un produit spécifique.

SELECT 
    customers.customer_name,
    orders.order_id
FROM 
    customers
INNER JOIN 
    orders
ON 
    customers.customer_id = orders.customer_id
WHERE 
    orders.product_id = 123;

Quand utiliser LEFT JOIN

LEFT JOIN est approprié lorsque l’on souhaite conserver toutes les données de la table de gauche tout en ajoutant des informations supplémentaires provenant de la table de droite. Voici quelques exemples de situations :

Afficher tous les clients avec leurs commandes

LEFT JOIN est utilisé lorsqu’il est nécessaire d’afficher une liste complète des clients, y compris ceux qui n’ont pas passé de commande, afin de voir si des informations sur les commandes existent.

SELECT 
    customers.customer_name,
    orders.order_id
FROM 
    customers
LEFT JOIN 
    orders
ON 
    customers.customer_id = orders.customer_id;

Identifier les clients sans commande

LEFT JOIN peut également être utilisé pour identifier les clients qui n’ont passé aucune commande. En utilisant une condition de vérification NULL, on peut extraire ces clients.

SELECT 
    customers.customer_name
FROM 
    customers
LEFT JOIN 
    orders
ON 
    customers.customer_id = orders.customer_id
WHERE 
    orders.order_id IS NULL;

Ainsi, INNER JOIN est idéal pour extraire des données communes, tandis que LEFT JOIN est utilisé pour conserver l’intégrité des données de la table de gauche tout en ajoutant des informations supplémentaires de la table de droite.

Conclusion

INNER JOIN et LEFT JOIN sont deux opérations SQL essentielles utilisées pour des objectifs différents. INNER JOIN extrait uniquement les données communes aux deux tables, en filtrant strictement les informations pertinentes. En revanche, LEFT JOIN conserve toutes les données de la table de gauche et ajoute les données correspondantes de la table de droite, ce qui permet d’éviter les lacunes dans les données tout en obtenant les informations nécessaires. En comprenant les caractéristiques de chaque opération JOIN, vous pouvez créer des requêtes de base de données plus efficaces et mieux adaptées à vos besoins.

Sommaire