4th Jul 2022 6 minutes de lecture Comment joindre deux tables par plusieurs colonnes en SQL Kateryna Koidan sql apprendre sql sql joins Table des matières Joindre deux tables sur plusieurs colonnes Exemple 1 : JOIN SQL par deux colonnes Exemple 2 : JOIN SQL par trois colonnes Pratiquons Les jointures en SQL par plusieurs colonnes ! La jointure SQL est un outil important pour combiner des informations provenant de plusieurs tables. Le plus souvent, vous joindrez des tables sur la base d'une clé primaire d'une table et d'une clé étrangère d'une autre table. Cependant, il est également fréquent que vous ayez besoin de joindre des tables par deux ou plusieurs colonnes. Dans cet article, je vais vous expliquer pourquoi vous souhaitez joindre des tables par plusieurs colonnes et comment le faire en SQL. La jointure de tables par une seule colonne ne fonctionne pas dans certains cas. Par exemple, vous pouvez rencontrer des cas où il n'y a pas une seule colonne dans la table qui identifie de manière unique les lignes. Ou encore, les tables que vous souhaitez joindre peuvent ne pas avoir une seule colonne commune à utiliser pour la jointure. Dans de telles situations, vous devrez peut-être utiliser plusieurs colonnes pour joindre des tables, par exemple le prénom et le nom de famille, ou le numéro de commande et l'année si la numérotation des commandes recommence chaque année. Voyons quelques exemples pour comprendre comment cela fonctionne en pratique. Joindre deux tables sur plusieurs colonnes Imaginons que nous gérons un réseau de jardins d'enfants. Dans notre base de données, nous avons les tables suivantes : studentsLa base de données des élèves, où nous disposons d'informations sur chaque élève, telles que son nom, l'école maternelle qu'il ou elle a fréquentée, la classe, l'année d'obtention du diplôme et le professeur. teachersDans cette section, vous trouverez le nom et le niveau d'éducation de chaque enseignant. classesLe site Web de l'école, où nous disposons d'informations sur chaque classe, telles que le nom de l'école maternelle, la classe, l'année d'obtention du diplôme et le nom de la salle de classe. students idfirst_namelast_namekindergartengraduation_yearclassteacher_first_nameteacher_last_name 1MaryJonesSunshine2021AIsabellaLopez 2JohnSmithLove & Learn2020BMiaGonzalez 3MarkAndersonButterfly2020BSophiaStevenson 4StevenMooreButterfly2021CMariaStuart 5DianaMillerButterfly2021CMariaStuart 6AnnaDavisSunshine2021AEmmaGrey 7HellenBrownSunshine2020BOliviaTaylor 8GracyLeeLove & Learn2020ACharlotteJohnson 9SaraGarciaLove & Learn2021BJasmineHarris 10KateWilsonSunshine2019BOliviaTaylor teachers idfirst_namelast_nameeducation 101IsabellaLopezUndergraduate 102MariaStuartUndergraduate 103EmmaGreyGraduate 104OliviaTaylorGraduate 105CharlotteJohnsonGraduate 106MiaGonzalezUndergraduate 107SophiaStevensonUndergraduate 108JasmineHarrisUndergraduate classes idkindergartengraduation_yearclassclassroom 201Sunshine2019BIronman 202Butterfly2020BSun 203Love & Learn2020ALove 204Love & Learn2020BHappiness 205Sunshine2020AHulk 206Sunshine2020BSuperman 207Butterfly2021AGarden 208Butterfly2021BIsland 209Butterfly2021CSea 210Love & Learn2021ADream 211Love & Learn2021BLaugh 212Sunshine2021AIronman Vous remarquerez peut-être que notre base de données n'est pas parfaitement organisée. Typiquement, la table students comprendrait des clés étrangères comme l'ID de l'enseignant et l'ID de la classe au lieu d'informations détaillées sur les enseignants et les classes correspondants. Cependant, même avec des données stockées de cette manière, nous pouvons joindre les tables tant que chaque table possède un ensemble de colonnes qui identifie de manière unique chaque enregistrement. Il est temps de passer à quelques requêtes SQL ! Exemple 1 : JOIN SQL par deux colonnes Dans notre premier exemple, nous voulons connaître le niveau d'éducation de l'enseignant pour chaque élève. Pour cela, nous devons combiner les informations des tables students et teachers. Malheureusement, nous ne disposons pas de la colonne ID de l'enseignant dans la table students dans la table . Cependant, nous disposons du nom et du prénom de l'enseignant dans les deux tables. Tant que nous n'avons pas de professeurs avec des noms complets identiques, nous pouvons sans risque joindre ces tables par ces deux colonnes. Voici la requête : SELECT s.first_name, s.last_name, s.teacher_first_name, s.teacher_last_name, t.education AS teacher_education FROM students s JOIN teachers t ON s.teacher_first_name = t.first_name AND s.teacher_last_name = t.last_name; Si vous avez besoin de vous rafraîchir la mémoire sur la syntaxe de SQL JOIN, consultez cet excellent aide-mémoire sur les JOIN SQL. Remarquez les deux conditions dans la clause ON, car nous exigeons que (1) le prénom de la table des professeurs soit égal au prénom du professeur dans la table des élèves et que (2) le nom de famille de la table des professeurs soit égal au nom de famille du professeur dans la table des élèves. Comme vous le voyez, pour spécifier deux conditions, il suffit de les placer dans la clause ON en utilisant le mot-clé AND entre les deux. Voici le résultat : first_namelast_nameteacher_first_nameteacher_last_nameteacher_education MaryJonesIsabellaLopezUndergraduate StevenMooreMariaStuartUndergraduate DianaMillerMariaStuartUndergraduate AnnaDavisEmmaGreyGraduate HellenBrownOliviaTaylorGraduate KateWilsonOliviaTaylorGraduate JohnSmithMiaGonzalezUndergraduate MarkAndersonSophiaStevensonUndergraduate GracyLeeCharlotteJohnsonGraduate SaraGarciaJasmineHarrisUndergraduate C'est bon ! Nous voyons maintenant le niveau d'éducation de l'enseignant correspondant à chaque étudiant. Pour vous entraîner davantage à joindre des tables en SQL, consultez ce cours interactif. Les jointures en SQL cours interactif. Exemple 2 : JOIN SQL par trois colonnes Dans l'exemple précédent, nous avons vu comment joindre deux tables par deux conditions. Nous pouvons avoir encore plus de conditions si nécessaire. Voyons comment joindre des tables en SQL avec trois conditions. Nous voulons maintenant connaître le nom de la salle de classe où chaque élève a joué et étudié. Les informations relatives à la salle de classe sont disponibles dans la table classes Les informations relatives à la classe sont disponibles dans la table Nous n'avons pas l'ID de la classe dans la table students dans la table. Cependant, nous avons trois colonnes qui identifient de manière unique une classe lorsqu'elles sont combinées : kindergarten, graduation_year, class. Les mêmes colonnes sont présentes dans la table classes tableau. Ainsi, nous allons combiner students et classes en utilisant trois colonnes : SELECT s.first_name, s.last_name, c.kindergarten, c.graduation_year, c.class, c.classroom FROM students s JOIN classes c ON s.kindergarten = c.kindergarten AND s.graduation_year = c.graduation_year AND s.class = c.class; Comme vous pouvez le voir, nous joignons les tables en utilisant les trois conditions placées dans la clause ON avec les mots-clés AND entre les deux. Voici le résultat : first_namelast_namekindergartengraduation_yearclassclassroom MarkAndersonButterfly2020BSun JohnSmithLove & Learn2020BHappiness StevenMooreButterfly2021CSea MaryJonesSunshine2021AIronman GracyLeeLove & Learn2020ALove HellenBrownSunshine2020BSuperman DianaMillerButterfly2021CSea AnnaDavisSunshine2021AIronman SaraGarciaLove & Learn2021BIronman KateWilsonSunshine2019BLaugh Le site JOIN a fonctionné comme prévu ! Nous avons maintenant la salle de classe correspondante pour chaque étudiant. Si vous souhaitez voir d'autres exemples, consultez ce livre de recettes sur la jonction de tableaux par plusieurs colonnes. Pratiquons Les jointures en SQL par plusieurs colonnes ! Le site SQL JOIN est l'un des outils de base des analystes de données travaillant avec SQL. Les bases de données relationnelles sont construites de telle sorte que les rapports analytiques nécessitent généralement de combiner des informations provenant de plusieurs tables. Vous rejoindrez des tables, parfois par une seule colonne, parfois par deux colonnes ou plus. Comme vous l'avez vu, joindre des tables par plusieurs colonnes est assez simple en SQL. Toutefois, si vous souhaitez vous familiariser avec SQL JOINs, il est essentiel de vous exercer à utiliser des ensembles de données réels. Je vous recommande de commencer par ce cours interactif Les jointures en SQL qui comprend 93 défis de codage. Il couvre les types de jointures les plus courants, tels que JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, les jointures automatiques et les jointures non équitables. Pour vous entraîner encore plus avec SQL JOINs et d'autres outils SQL de base, envisagez de suivre la Le SQL de A à Z piste. Il comprend 7 cours interactifs qui couvrent les fonctions SQL standard, les rapports SQL de base, les fonctions de fenêtre, les expressions de table courantes, les requêtes récursives, et bien plus encore. Merci de votre lecture et bon apprentissage ! Tags: sql apprendre sql sql joins