Traitement SQL et Écriture de Requêtes pour la Jonction de Plusieurs Tables avec LEFT JOIN

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.

Sommaire

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 :

  1. La sous-requête récupère la date de la dernière commande pour chaque client de la table orders.
  2. En se basant sur cette sous-requête, elle récupère les lignes de commande avec les informations de la dernière commande.
  3. Ces informations de la dernière commande sont LEFT JOINed avec la table customers, conservant toutes les informations des clients.
  4. 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.

Sommaire