LEFT JOIN est souvent utilisé comme méthode pour joindre efficacement des tables de base de données. En utilisant LEFT JOIN, vous pouvez joindre toutes les lignes de la table de gauche avec les lignes correspondantes de la table de droite. Cette méthode est très utile pour récupérer les données nécessaires même lorsque les données ne correspondent pas complètement. Dans cet article, nous expliquerons étape par étape comment écrire des requêtes SQL et les exécuter lors de la jonction de plusieurs tables avec LEFT JOIN. Acquérons des compétences pratiques avec des exemples spécifiques.
Concept de base du LEFT JOIN
LEFT JOIN est une méthode utilisée en SQL pour joindre des tables. Dans cette méthode de jointure, toutes les lignes de la table de gauche sont conservées, et les lignes correspondantes de la table de droite sont jointes. S’il n’y a pas de lignes correspondantes dans la table de droite, les lignes de la table de gauche sont conservées, et les colonnes de la table de droite contiendront NULL. Cela vous permet de récupérer toutes les données de la table de gauche même s’il n’y a pas de données correspondantes dans la table de droite.
Syntaxe de base pour joindre plusieurs tables avec LEFT JOIN
La syntaxe SQL de base pour joindre plusieurs tables avec LEFT JOIN est la suivante. En utilisant cette syntaxe, vous pouvez récupérer les données nécessaires de plusieurs tables à la fois.
SELECT tableA.column1, tableA.column2, tableB.column3, tableC.column4
FROM tableA
LEFT JOIN tableB ON tableA.common_column = tableB.common_column
LEFT JOIN tableC ON tableA.common_column = tableC.common_column;
Dans la syntaxe ci-dessus, toutes les lignes de tableA
sont conservées, et les lignes correspondantes de tableB
et tableC
sont jointes. Les colonnes communes de chaque table sont la base de la jointure.
Préparation des données d’exemple
Préparons des données d’exemple à utiliser comme exemple de LEFT JOIN. Ici, nous utiliserons trois tables : « customers », « orders » et « products ».
Table customers :
customer_id | customer_name
------------|---------------
1 | John Doe
2 | Jane Smith
3 | Mike Brown
Table orders :
order_id | customer_id | order_date
---------|-------------|------------
101 | 1 | 2023-05-01
102 | 2 | 2023-05-03
103 | 3 | 2023-05-04
104 | 1 | 2023-05-05
Table products :
product_id | order_id | product_name
-----------|----------|--------------
1001 | 101 | Laptop
1002 | 102 | Smartphone
1003 | 104 | Tablet
En utilisant ces tables, nous allons joindre les informations de chaque commande des clients et les produits commandés.
Exemple spécifique de requête LEFT JOIN
En se basant sur les données d’exemple, nous allons montrer une requête SQL spécifique pour joindre plusieurs tables avec LEFT JOIN. La requête suivante joint la table « customers » avec la table « orders » et la table « products », et récupère les détails de chaque commande des clients et des produits commandés.
SELECT
customers.customer_id,
customers.customer_name,
orders.order_id,
orders.order_date,
products.product_name
FROM
customers
LEFT JOIN
orders ON customers.customer_id = orders.customer_id
LEFT JOIN
products ON orders.order_id = products.order_id;
Cette requête conserve toutes les lignes de la table « customers » et joint les lignes correspondantes des tables « orders » et « products ». Cela affiche toutes les commandes de chaque client et les produits inclus dans ces commandes.
Résultats de l’exécution de la requête et explication
L’exécution de la requête LEFT JOIN ci-dessus produira les résultats suivants. Nous allons comprendre le comportement de LEFT JOIN en nous basant sur ce résultat.
Résultats de l’exécution de la requête :
customer_id | customer_name | order_id | order_date | product_name
------------|---------------|----------|------------|--------------
1 | John Doe | 101 | 2023-05-01 | Laptop
1 | John Doe | 104 | 2023-05-05 | Tablet
2 | Jane Smith | 102 | 2023-05-03 | Smartphone
3 | Mike Brown | 103 | 2023-05-04 | NULL
Explication :
- John Doe :
- A deux commandes (ID : 101 et 104), et a acheté respectivement « Laptop » et « Tablet ».
- Jane Smith :
- A une commande (ID : 102), et a acheté « Smartphone ».
- Mike Brown :
- A une commande (ID : 103), mais comme il n’y a pas de données correspondantes dans la table des produits,
product_name
est NULL.
Ce résultat confirme que LEFT JOIN conserve toutes les lignes de la table de gauche (customers) et joint les lignes correspondantes des tables de droite (orders, products). De plus, il montre que s’il n’y a pas de données correspondantes dans la table de droite, la colonne contiendra NULL.
Exemples avancés de LEFT JOIN
Nous allons introduire des exemples avancés de LEFT JOIN pour des scénarios plus complexes. Ici, nous allons montrer une requête qui récupère les informations de tous les clients, y compris ceux sans commandes, ainsi que les informations de la dernière commande de chaque client.
Tout d’abord, modifions les données d’exemple de la table orders
pour inclure plusieurs dates de commande.
Table orders mise à jour :
order_id | customer_id | order_date
---------|-------------|------------
101 | 1 | 2023-05-01
102 | 2 | 2023-05-03
103 | 3 | 2023-05-04
104 | 1 | 2023-05-05
105 | 3 | 2023-05-07
En utilisant ces données, la requête pour récupérer les informations de la dernière commande est montrée ci-dessous.
SELECT
customers.customer_id,
customers.customer_name,
latest_orders.order_id,
latest_orders.order_date,
products.product_name
FROM
customers
LEFT JOIN (
SELECT
orders.customer_id,
orders.order_id,
orders.order_date
FROM
orders
INNER JOIN (
SELECT
customer_id,
MAX(order_date) AS latest_order_date
FROM
orders
GROUP BY
customer_id
) AS latest ON orders.customer_id = latest.customer_id AND orders.order_date = latest.latest_order_date
) AS latest_orders ON customers.customer_id = latest_orders.customer_id
LEFT JOIN
products ON latest_orders.order_id = products.order_id;
Explication de cette requête :
- La sous-requête récupère la date de la dernière commande pour chaque client de la table
orders
. - En se basant sur cette sous-requête, elle récupère les lignes de commande avec les informations de la dernière commande.
- Ces informations de la dernière commande sont LEFT JOINed avec la table
customers
, conservant toutes les informations des clients. - Enfin, elle joint les informations des produits inclus dans les dernières commandes.
Cet exemple avancé aide à comprendre comment récupérer les informations de la dernière commande pour chaque client.
Conclusion
LEFT JOIN est un outil puissant en SQL pour joindre plusieurs tables tout en conservant toutes les lignes de la table de gauche. Dans cet article, nous avons expliqué les concepts de base du LEFT JOIN, les méthodes pour joindre plusieurs tables, des exemples spécifiques utilisant des données d’exemple, et des exemples avancés.
Les points clés du LEFT JOIN sont les suivants :
- Concept de base : Conserve toutes les lignes de la table de gauche et joint les lignes correspondantes de la table de droite.
- Syntaxe de base : Comprendre la syntaxe simple du LEFT JOIN est crucial.
- Exemples pratiques : Exécuter des requêtes en utilisant des données d’exemple pour confirmer le comportement de LEFT JOIN.
- Exemples avancés : Gérer des scénarios plus complexes, tels que la récupération des dernières données de plusieurs tables.
En utilisant efficacement LEFT JOIN, vous pouvez récupérer des informations nécessaires des bases de données de manière efficace, aidant à l’analyse des données et à la création de rapports.
Avec cela, nous concluons l’explication sur la manière d’écrire et d’exécuter des requêtes SQL pour joindre plusieurs tables avec LEFT JOIN.