4th Jul 2022 7 minutes de lecture Qu'est-ce que LEFT JOIN en SQL ? Kateryna Koidan sql apprendre sql sql joins Table des matières JOIN en SQL Explication du LEFT JOIN Comment fonctionne le LEFT JOIN ? Utilisation des LEFT JOINs en SQL Exemple avec des employés Exemple avec des pays Il est temps de pratiquer le LEFT JOIN ! Découvrez les détails du LEFT JOIN, l'un des types de jointures SQL les plus courants. Le langage SQL consiste principalement à extraire des données des bases de données. Très souvent, vous aurez besoin de combiner des données provenant de plusieurs tables de votre base de données. C'est là que les jointures entrent en jeu. Le LEFT JOIN est l'un des types de JOIN que vous êtes susceptible d'utiliser très souvent. Dans cet article, je vais vous expliquer la syntaxe du LEFT JOIN et son fonctionnement à l'aide de plusieurs exemples et illustrations. JOIN en SQL En SQL, vous utilisez JOIN pour combiner les données de deux tables sur la base d'une colonne dont les valeurs correspondent. Par exemple, si vous disposez d'une table contenant des informations sur les clients (ID client, prénom, nom, etc.) et d'une autre table contenant les données relatives aux commandes pour une période spécifique (ID commande, date, ID client, ID produit, etc.), vous pouvez joindre ces deux tables sur la base des colonnes qui stockent les numéros d'identification des clients. Vous obtiendrez ainsi les détails de la commande et du client pour chaque client. Toutefois, il est important de savoir qu'il existe différents types de jointures en SQL. Vous devrez choisir le bon type en fonction des lignes que vous souhaitez conserver dans le jeu de résultats. Si vous vous intéressez aux clients qui n'ont passé des commandes que pendant une période donnée, vous utiliserez une simple JOIN (également appelée INNER JOIN). Ce type de jointure SQL ne conserve que les lignes présentes dans les deux tables ; dans notre cas, vous ne verrez une ligne dans le jeu de résultats que si l'ID du client figure dans la table customers ainsi que dans la table orders et dans la table Il existe des cas où vous souhaitez conserver des lignes de la première table qui n'ont pas d'enregistrements correspondants dans la deuxième table. Nous pouvons vouloir voir des informations sur tous les clients de notre ensemble de résultats, même s'ils n'ont pas passé de commande au cours d'une période spécifique. Dans ce cas, vous utiliserez un LEFT JOIN, qui combine les données de deux tables de sorte que toutes les lignes de la table de gauche (la première) soient incluses dans le résultat. C'est le type de JOIN sur lequel nous allons nous concentrer dans cet article. Si vous n'êtes pas sûr du type de jointure dont vous avez besoin dans un cas particulier, consultez notre tutoriel vidéo sur les jointures SQL LEFT, RIGHT et FULL. Explication du LEFT JOIN LEFT JOINLa jointure gauche, également appelée LEFT OUTER JOIN, renvoie tous les enregistrements de la table de gauche (première) et les enregistrements correspondants de la table de droite (deuxième). S'il n'y a pas de correspondance pour un enregistrement spécifique, vous obtiendrez NULLs dans les colonnes correspondantes de la table de droite. Voyons comment cela fonctionne avec l'exemple des clients et des commandes mentionné ci-dessus. Voici nos customers et orders . customers idfirst_namelast_name 1SteveBrown 2HelenStewart 3JaneSmith 4JackBond orders iddatecustomer_idproduct_idamount 12020-12-20323213.99 22020-12-20312412.45 32020-12-2111889.95 42020-12-224854.60 Pour joindre ces deux tables tout en conservant tous les enregistrements de la table customers table, vous pouvez utiliser la requête SQL suivante : SELECT * FROM customers LEFT JOIN orders ON customers.id = orders.customer_id ORDER BY customers.id; Passons en revue la syntaxe du LEFT JOIN: SELECT - Commencez par énumérer les colonnes (des deux tables) que vous souhaitez voir apparaître dans le jeu de résultats (ici, nous sélectionnons toutes les colonnes en utilisant *) ; FROM - Mettez le nom de la table de gauche, celle où vous voulez garder tous les enregistrements (c'est à dire customers) ; LEFT JOIN - Mettez le nom de la deuxième table (droite) (c'est-à-dire orders) ; ON - Utilisez ce mot-clé pour indiquer les colonnes qui seront utilisées pour joindre les tables, c'est-à-dire celles qui ont les valeurs correspondantes. (Ici, il s'agit de id à partir de customers et customer_id de orders). Dans cette requête, nous utilisons également ORDER BY pour ordonner le résultat par l'ID du client, mais ceci est facultatif. Après avoir exécuté cette requête, vous obtiendrez le tableau suivant. customersorders idfirst_namelast_nameiddatecustomer_idproduct_idamount 1SteveBrown12020-12-2111889.95 2HelenStewart[NULL][NULL][NULL][NULL][NULL] 3JaneSmith32020-12-20323213.99 3JaneSmith32020-12-20312412.45 4JackBond42020-12-224854.60 Jetez un coup d'œil à l'animation : Comment fonctionne le LEFT JOIN ? Tout d'abord, la base de données examine chaque ligne de la table de gauche et recherche une correspondance dans la table de droite en fonction des colonnes associées. S'il y a une correspondance, elle ajoute les données de la table de droite à la ligne correspondante de la table de gauche. S'il y a plusieurs correspondances (comme dans notre cas avec le client n° 3), il duplique la ligne dans la table de gauche pour inclure tous les enregistrements de la table de droite. S'il n'y a pas de correspondance, il conserve la ligne de la table de gauche et place NULL dans les colonnes correspondantes de la table de droite (client n° 2 dans notre exemple). C'est simple, n'est-ce pas ? Vous pouvez vous entraîner aux LEFT JOINs dans ce cours interactif Les jointures en SQL . Voyons maintenant d'autres exemples d'utilisation des LEFT JOIN. Utilisation des LEFT JOINs en SQL Exemple avec des employés Nous avons une table contenant employees info et nous voulons la joindre à la table qui répertorie toutes les primes versées en janvier (jan_bonuses). employees idfirst_namelast_name 1JoeBiden 2BernieSanders 3PeterButtigieg 4ElizabethWarren 5MichaelBloomberg jan_bonuses idemployee_idamount 10113460.00 10222340.00 10341800.00 Nous voulons joindre ces tables afin de voir qui a reçu des primes en janvier. Notre résultat doit inclure tous les employés, qu'ils aient reçu une prime ou non. Nous allons donc utiliser une LEFT JOIN: SELECT * FROM employees LEFT JOIN jan_bonuses ON employees.id = jan_bonuses.employee_id; employeesjan_bonuses idfirst_namelast_nameidemployee_idamount 1JoeBiden10113460.00 2BernieSanders10222340.00 3PeterButtigieg[NULL][NULL][NULL] 4ElizabethWarren10341800.00 5MichaelBloomberg[NULL][NULL][NULL] Comme prévu, le résultat inclut tous les employés. Si un employé n'est pas trouvé dans le tableau contenant les informations sur les primes, les colonnes correspondantes du second tableau sont remplies avec les valeurs NULL. Vous souhaitez savoir comment fonctionnent les autres OUTER JOIN ? Lisez ce guide illustré sur le SQL OUTER JOIN pour apprendre comment RIGHT OUTER JOIN et FULL OUTER JOIN diffèrent de LEFT OUTER JOIN. Exemple avec des pays Dans notre dernier exemple, nous allons joindre deux tables à l'aide de LEFT JOIN, mais nous n'inclurons que certaines colonnes dans le résultat final. Nous avons une liste de pays avec quelques informations de base et nous voulons la compléter avec les données du PIB pour 2019, lorsqu'elles sont disponibles. countries idnamepopulationcurrencyarea 201United States330,770,244USD9,525,067 202China1,405,631,120CNY9,596,961 203Japan125,770,000JPY377,975 204Germany83,122,889EUR357,114 205India1,370,521,240INR3,287,263 gdp_2019 rankcountry_idgdp_nominal_MUSD 120121,427,700 220214,342,903 32035,081,770 Dans notre résultat, nous n'avons pas besoin de toutes les informations sur chaque pays - seulement l'ID du pays, son nom, sa population et son PIB nominal pour 2019. Voici la requête que nous utiliserons : SELECT id, name, population, gdp_nominal_MUSD FROM countries LEFT JOIN gdp_2019 ON countries.id = gdp_2019.country_id; countriesgdp_2019 idnamepopulationgdp_nominal_MUSD 201United States330,770,24421,427,700 202China1,405,631,12014,342,903 203Japan125,770,0005,081,770 204Germany83,122,889[NULL] 205India1,370,521,240[NULL] La table comprend trois colonnes de la table countries et une colonne de la table gdp_2019 et une colonne de la table info. Comme prévu, LEFT JOIN conserve tous les enregistrements de la première table et introduit les valeurs NULL pour les enregistrements non appariés. Notez que dans cette déclaration SELECT, nous avons simplement énuméré les noms des colonnes que nous voulons voir apparaître dans le résultat. Cela ne fonctionne que si nous n'avons pas de colonnes portant le même nom dans les deux tables. L'approche la plus sûre consiste à spécifier la table pour chaque colonne demandée, par exemple countries.id, countries.name, countries.population, gdp_2019.gdp_nominal_MUSD. Si vous devez effectuer une jointure gauche (LEFT JOIN) pour plus de deux tables, lisez mon guide sur la jointure gauche de plusieurs tables en SQL. Il est temps de pratiquer le LEFT JOIN ! Vous avez appris la syntaxe de LEFT JOIN et savez quand et comment utiliser ce type de jointure SQL. Vous êtes prêt pour l'étape suivante - écrire vos propres requêtes SQL avec des LEFT JOINs. Je vous recommande de commencer par notre Les jointures en SQL qui comprend 93 exercices interactifs couvrant les jointures INNER JOIN, OUTER JOIN, les jointures non égales et bien plus encore. Après avoir terminé ce cours, vous saurez comment choisir le bon type de JOIN, comment joindre plusieurs tables, comment joindre une table avec elle-même et comment joindre des tables en utilisant des opérateurs conditionnels autres que l'égalité. Vous n'êtes pas sûr de vouloir pratiquer Les jointures en SQL en ligne ? Consultez cet article qui présente les meilleures approches pour s'exercer à différents types de Les jointures en SQL. Merci de votre lecture et bon apprentissage ! Tags: sql apprendre sql sql joins