Accéder au contenu principal

Comment joindre 3 tableaux en SQL : Méthodes et exemples

Apprenez à joindre efficacement trois tableaux en SQL. Découvrez des méthodes et des exemples pratiques pour améliorer vos compétences en matière de manipulation de données. Maîtrisez facilement les jointures SQL.
Actualisé 14 févr. 2025  · 7 min de lecture

Si les jointures SQL sont couramment utilisées pour combiner les données de deux tableaux, il n'est pas nécessaire de s'arrêter là. Vous pouvez en fait fusionner des données provenant de trois tableaux, voire plus, afin de découvrir des relations et des informations encore plus complexes à partir de vos données.

Dans cet article, je vous présenterai des exemples de jonction de trois tableaux en SQL ; nous examinerons également les implémentations spécifiques aux bases de données et les meilleures pratiques. Je vous recommande également de suivre nos cours Introduction à SQL et Learn SQL pour acquérir toutes les connaissances de base importantes.

Les étapes pour joindre 3 tableaux en SQL

La jonction de trois tableaux en SQL vous permet d'effectuer des requêtes complexes pour récupérer des données dans plusieurs tableaux. Lorsque vous joignez trois tableaux, vous utilisez la clause JOIN pour combiner les données de ces tableaux. 

Supposons que vous disposiez des trois tableaux suivants : Customers Products , et Orders.

Exemple de tableau Clients en SQL.

Exemple de tableau Clients en SQL. Image par l'auteur.

Exemple de tableau Produits en SQL.

Exemple de tableau Produits en SQL. Image par l'auteur.

Exemple de tableau des commandes en SQL.

Exemple de tableau des commandes en SQL. Image par l'auteur.

Tout d'abord, vous pouvez joindre les tableaux Customers et Orders pour afficher les clients qui ont passé commande et les détails de leur commande, tels que order_id, order_date, et la commande quantity.

-- Select data from Customers
SELECT 
    Customers.customer_id, 
    Customers.first_name, 
    Customers.last_name, 
    Orders.order_id, 
    Orders.order_date, 
    Orders.quantity 
FROM Customers
-- Join Orders table
INNER JOIN Orders 
ON Customers.customer_id = Orders.customer_id;

Exemple de jointure SQL entre les tableaux Clients et Commandes.

Exemple de jointure SQL entre les tableaux Clients et Commandes. Image par l'auteur.

Enfin, vous pouvez combiner les trois tableaux, Customers, Orders et Products, pour obtenir une vue d'ensemble des clients, de leurs commandes, des produits qu'ils ont achetés et du coût total de chaque commande.

-- Select data starting with Customers
SELECT 
    Customers.customer_id,
    Customers.first_name,
    Customers.last_name,
    Orders.order_id,
    Orders.order_date,
    Products.product_name,
    Orders.quantity,
    Products.price,
    (Orders.quantity * Products.price) AS total_cost -- Total cost calculation
FROM Customers
-- Join the Orders table based on customer_id
INNER JOIN Orders 
ON Customers.customer_id = Orders.customer_id
-- Join the Products table based on product_id
INNER JOIN Products 
ON Orders.product_id = Products.product_id;

Exemple de jointure SQL de trois tableaux.

Exemple de jointure SQL de trois tableaux. Image par l'auteur.

Examinons les exemples pratiques d'utilisation de INNER JOIN, LEFT JOIN et RIGHT JOIN pour relier trois tableaux. Consultez notre tutoriel Introduction aux jointures SQL pour en savoir plus sur les différents types et exemples de jointures.

Exemples de jointure de 3 tableaux en SQL

Voyons maintenant quelques exemples pratiques en utilisant INNER JOIN, LEFT JOIN, et RIGHT JOIN pour joindre trois tableaux.

Si vous ne comprenez pas la signification de l'une de ces jointures et que vous souhaitez vous entraîner davantage afin de maîtriser les bonnes techniques, inscrivez-vous à notre cours Jointure de données en SQL, qui vous aidera non seulement à effectuer des jointures SQL, mais vous enseignera également la théorie des ensembles relationnels et les sous-requêtes.

Utilisation de la fonction INNER JOIN

Le site INNER JOIN extrait les enregistrements contenant des valeurs correspondantes dans les trois tableaux, en filtrant les enregistrements qui ne correspondent pas. L'utilisation de INNER JOIN est idéale lorsque vous n'avez besoin que de résultats ayant des relations directes dans tous les tableaux concernés.

Supposons que vous disposiez de trois tableaux : Customers, Orders, et Products. La requête ci-dessous récupère uniquement les clients qui ont passé des commandes et inclut les détails des produits associés à chaque commande.

-- Select customer details, order information, and associated product names
SELECT 
    Customers.customer_id, 
    Customers.customer_name, 
    Orders.order_id, 
    Products.product_name 
-- Select from Customers table
FROM Customers
    -- Join Orders table
    INNER JOIN Orders 
        ON Customers.customer_id = Orders.customer_id
    -- Join Products table
    INNER JOIN Products 
        ON Orders.product_id = Products.product_id;

Utilisation de LEFT JOIN

Le site LEFT JOIN renvoie tous les enregistrements du premier tableau (de gauche) et tous les enregistrements correspondants des deux autres tableaux. S'il n'y a pas de correspondance, les valeurs NULL sont renvoyées pour les tableaux de droite. L'adresse LEFT JOIN est utile pour récupérer tous les enregistrements du tableau principal, même si certaines lignes n'ont pas de données connexes dans les autres tableaux.

Dans l'exemple suivant, tous les clients apparaîtront dans le résultat, même s'ils n'ont pas passé de commande. Les champs de données renvoient les valeurs NULL s'il n'y a pas de données de commande ou de produit correspondantes.

-- Select customer details, order information, and product names
SELECT 
    Customers.customer_id, 
    Customers.customer_name,
    Orders.order_id, 
    Products.product_name
FROM Customers
    -- Join Orders table
    LEFT JOIN Orders 
        ON Customers.customer_id = Orders.customer_id
    -- Join Products table
    LEFT JOIN Products 
        ON Orders.product_id = Products.product_id;

Notez que LEFT JOIN est la même chose que LEFT OUTER JOIN dans SQL. Nous disposons d'un didacticiel qui fournit des détails : SQL LEFT JOIN vs. LEFT OUTER JOIN.

Utilisation de RIGHT JOIN

Un site RIGHT JOIN extrait tous les enregistrements du troisième tableau (le plus à droite) et tous les enregistrements correspondants des tableaux de gauche. Bien que RIGHT JOIN soit moins courant, il est toujours utile pour hiérarchiser les enregistrements dans le tableau le plus à droite.

Par exemple, dans le cadre d'une analyse des stocks, vous pouvez vouloir savoir quels produits ont fait l'objet de commandes ou d'interactions avec des clients. Tous les produits seront répertoriés dans la requête ci-dessous, y compris les données relatives à la commande ou au client. S'il y a des produits qui n'ont pas été commandés, les champs order_id et customer_name afficheront NULL.

-- Select customer details, order information, and product names
SELECT 
    Customers.customer_id,
    Customers.customer_name,
    Orders.order_id,
    Products.product_name
 -- Select from Customers table
FROM Customers
 -- Join Orders table
    RIGHT JOIN Orders 
        ON Customers.customer_id = Orders.customer_id
 -- Join Products table
    RIGHT JOIN Products 
        ON Orders.product_id = Products.product_id;

Bien que les exemples ci-dessus illustrent l'utilisation d'un seul type de jointure (INNER JOIN, LEFT JOIN, ou RIGHT JOIN), il est tout à fait possible - et souvent nécessaire - de combiner différents types de jointures au sein d'une même requête pour traiter des relations de données plus complexes. Par exemple, vous pouvez utiliser un LEFT JOIN pour inclure tous les tableaux d'un tableau tout en utilisant un INNER JOIN pour une autre relation au sein de la même requête.

À ce propos, il convient également de préciser que SQL traite les jointures de manière séquentielle, de gauche à droite, de sorte que l'ordre détermine la manière dont les tableaux sont combinés et la façon dont les valeurs NULL sont traitées. C'est pourquoi j'ai commencé cet article en montrant le processus en deux étapes. Construisez votre requête étape par étape et vérifiez les résultats de manière incrémentale. LEFT JOIN suivi de INNER JOIN est souvent différent de INNER JOIN suivi de LEFT JOIN.

Pourquoi devons-nous joindre 3 tableaux en SQL ?

Prenons un instant pour parler de la conception de la base de données. S'il est désormais courant de devoir effectuer des jointures entre plus de deux tableaux, c'est parce que la normalisation des bases de données est désormais courante. Les bases de données (et, en fait, les personnes qui les conçoivent) y parviennent en organisant les informations dans des tableaux distincts et apparentés. Cette mesure vise à éliminer la redondance (et pour d'autres raisons également). Cette décomposition de la base de données signifie que les données relatives à différentes entités - telles que les tableaux Customers, Orders et Products que nous avons examinés ci-dessus - sont stockées séparément.

En d'autres termes, comme les données sont souvent stockées dans un schéma de base de données normalisé, la recherche d'informations nécessite souvent de combiner des données provenant de plusieurs tableaux. C'est pourquoi nous devons savoir comment écrire des requêtes qui comportent de nombreuses jointures, car, tout simplement, c'est ainsi que les données sont probablement structurées. Notre cours sur la conception des bases de données est une bonne source d'information sur ces idées.

Fonctionnalités de jointure spécifiques aux bases de données

Bien que les jointures SQL soient cohérentes dans la plupart des bases de données relationnelles, il existe quelques différences dans la gestion des jointures multiples impliquant trois tableaux ou plus. Examinons les implémentations et les considérations spécifiques à la base de données pour éviter les pièges et les problèmes d'optimisation.

MySQL

MySQL fonctionne généralement bien avec les jointures de base, mais peut rencontrer des difficultés avec les requêtes complexes impliquant plusieurs tableaux. La commande MySQL EXPLAIN est utile pour comprendre les performances des jointures et identifier les moyens d'optimiser les requêtes avec l'indexation ou la réécriture des requêtes. MySQL supporte également le mot-clé STRAIGHT_JOIN, qui force l'ordre de jointure, améliorant potentiellement les performances des requêtes dans les cas où l'optimisation de jointure par défaut n'est pas idéale.

PostgreSQL

Le puissant optimiseur de PostgreSQL le rend très efficace pour les jointures complexes, même avec de grands ensembles de données. La prise en charge des requêtes récursives à l'aide de la clause WITH RECURSIVE permet de joindre des données hiérarchiques dans plusieurs tableaux. Les fonctions de fenêtre de PostgreSQL sont avancées et peuvent compléter les jointures en permettant une analyse ligne par ligne dans un ensemble de données joint.

Serveur SQL

SQL Server autorise des astuces de jointure spécifiques (MERGE JOIN, LOOP JOIN, et HASH JOIN) pour remplacer le comportement par défaut, améliorant ainsi les performances des jointures multi-tables. Les opérateurs CROSS APPLY et OUTER APPLY de SQL Server sont des outils puissants permettant de joindre des tableaux à l'aide de fonctions évaluées par des tableaux, ce qui offre une plus grande souplesse dans les requêtes portant sur plusieurs tableaux.

Je vous recommande de suivre le cours Introduction à SQL Server de DataCamp pour comprendre les différentes fonctionnalités de SQL Server dans l'interrogation des données. Essayez également notre cursus de compétences SQL Server Fundamentals pour améliorer vos compétences en matière de tableaux de jointure et d'analyse de données. Le cursus de développeur SQL Server vous permettra d'acquérir les compétences nécessaires pour écrire, dépanner et optimiser vos requêtes à l'aide de SQL Server.

Oracle SQL

Oracle prend en charge toutes les jointures standard et propose des options uniques telles que NATURAL JOIN, qui joint automatiquement les tableaux sur la base des noms de colonnes correspondants. La prise en charge par Oracle des requêtes hiérarchiques avec CONNECT BY peut parfois réduire la nécessité de jointures supplémentaires en traitant plus efficacement les données imbriquées.

Meilleures pratiques lors de la jointure de 3 tableaux en SQL

La jonction de trois tableaux en SQL peut accroître la complexité des requêtes et avoir un impact sur les performances, en particulier lorsque la taille des données augmente. Vous trouverez ci-dessous les meilleures pratiques et les techniques d'optimisation pour améliorer les performances des requêtes.

  • Utilisez une indexation appropriée : Les colonnes d'index fréquemment utilisées dans les conditions de jointure accélèrent la recherche de données en réduisant la quantité de données analysées.

  • Filtre précoce à l'aide des conditions WHERE et JOIN : Placez des conditions de filtrage directement dans la clause JOIN ou WHERE pour réduire les données à traiter dans les jointures ultérieures, ce qui améliore les performances.

  • Tenez compte de l'ordre et du type de jointure : Lorsque vous joignez plusieurs tableaux, joignez d'abord les tableaux les plus petits afin de réduire l'ensemble des données le plus rapidement possible.  Évitez d'utiliser les jointures LEFT ou RIGHT si votre analyse ne nécessite pas d'enregistrements non appariés.

  • Réduire les colonnes sélectionnées avec SELECT : Évitez d'utiliser SELECT * pour inclure des colonnes inutiles dans les données. Sélectionnez explicitement les tableaux nécessaires pour réduire les données renvoyées par chaque tableau, ce qui minimise l'utilisation de la mémoire et améliore les performances des requêtes.

  • Utilisez des sous-requêtes ou des tableaux temporaires pour les jointures complexes : Envisagez de diviser la requête en plusieurs parties plus petites en utilisant des sous-requêtes pour les jointures très complexes. Pour les jointures qui impliquent des requêtes complexes répétées, envisagez de stocker les résultats intermédiaires dans des tableaux temporaires afin de gagner du temps de traitement, en particulier pour les requêtes qui nécessitent des calculs importants.

Conclusion et formation complémentaire

La jonction de trois tableaux en SQL vous permet de combiner les données de plusieurs tableaux pour une analyse complète des données et la gestion de la base de données. En maîtrisant les bonnes techniques, vous vous assurez que votre code est efficace, évolutif et performant.

Si vous souhaitez devenir un analyste de données compétent, consultez notre parcours Associate Data Analyst in SQL pour acquérir les compétences nécessaires. Le cours Reporting in SQL est également approprié si vous souhaitez apprendre à construire des tableaux de bord professionnels à l'aide de SQL. Enfin, je vous recommande d'obtenir la certification SQL Associate pour démontrer votre maîtrise de l'utilisation de SQL pour l'analyse de données et faire ressortir votre CV.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Je crée des articles qui simplifient la science des données et l'analyse, en les rendant faciles à comprendre et accessibles.

FAQ

Quels types de jointures peuvent être utilisés pour relier trois tableaux ?

Vous pouvez utiliser INNER JOIN, LEFT JOIN, RIGHT JOIN, et parfois FULL JOIN pour combiner trois tableaux.

L'ordre de jointure a-t-il une importance lorsque l'on joint trois tableaux ?

L'ordre de jointure peut avoir un impact sur les performances, en particulier pour les tableaux de grande taille. Commencer par des tableaux plus petits ou très filtrés permet souvent d'améliorer l'efficacité.

Comment optimiser les performances lors de la jonction de trois tableaux en SQL ?

Pour optimiser les performances, veillez à indexer correctement les colonnes utilisées dans les jointures, limitez le nombre de lignes renvoyées avec les clauses WHERE et ne sélectionnez que les colonnes nécessaires.

Puis-je joindre plus de trois tableaux ?

Vous pouvez joindre plus de trois tableaux en SQL, mais la requête peut devenir plus complexe et nécessiter des optimisations de performance.

Sujets

Apprenez SQL avec DataCamp

Certification disponible

cours

Jointure de données en SQL

4 hr
200.4K
Améliorez vos connaissances en SQL et apprenez à joindre des tableaux, à appliquer la théorie des ensembles relationnels et à travailler avec des sous-requêtes.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

blog

Nous avons fait don de bourses DataCamp Premium à un million de personnes, et ce n'est pas fini.

Réparties entre nos deux programmes d'impact social, DataCamp Classrooms et #DCDonates, les bourses offrent un accès illimité à tout ce que DataCamp Premium a à offrir.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

Voir plusVoir plus