2nd Dec 2022 8 minutes de lecture 4 façons simples d'apprendre enfin quel JOIN utiliser dans une requête SQL Kateryna Koidan sql apprendre sql sql joins Table des matières Types de jointures SQL : Un bref aperçu INNER JOIN LEFT JOIN JOINT DROIT FULL JOIN 4 façons d'apprendre Les jointures en SQL Vous savez probablement déjà que vous devez utiliser le JOIN pour combiner les données de plusieurs tables. Mais quel type de JOIN ? Dans cet article, je vais vous présenter quatre façons simples d'apprendre enfin quel JOIN utiliser dans différents scénarios. Avant de passer aux stratégies intelligentes pour apprendre Les jointures en SQL, je vous propose de faire un bref tour d'horizon des principaux types de JOIN. Nous allons passer par plusieurs exemples pour rappeler la différence entre (INNER) JOIN, LEFT (OUTER) JOIN, RIGHT (OUTER) JOIN et FULL (OUTER) JOIN. Types de jointures SQL : Un bref aperçu Pour nos exemples de jointures, nous utiliserons les données d'une maison de naissance, un établissement de soins de santé dirigé par des sages-femmes pour les mères en travail. Nous disposons en particulier de deux tables : newbornsCe site contient des informations de base sur les bébés nés au cours d'une période donnée. midwivesLe site de la maison de naissance, qui contient les noms et l'expérience des sages-femmes qui travaillent dans notre maison de naissance. Voici les tables : newborns idmother_namegenderweightheightmidwife_id 11Marta StewartMale3.452.0104 12Cathrine BlackFemale3.048.5101 13Julia GreyFemale2.848.1104 14Penelope GreenMale3.852.5105 15Gabriela GarciaMale2.948.8105 16Nikita MooreMale4.053.0102 17Lucy MillerFemale2.547.3101 midwives idfirst_nameyears_experience 101Samantha White6 102Kathleen Webster2 103Sarah McCarty1 105Julia Smith4 106Angela Phillips0 Maintenant, passons directement aux exemples. INNER JOIN Nous allons commencer par le type de jointure le plus courant, à savoir INNER JOIN (ou simplement JOIN). Ce type de jointure est utilisé pour afficher les enregistrements correspondants des deux tables. Disons que nous voulons obtenir l'identifiant du nouveau-né, le nom de sa mère, et aussi le nom de la sage-femme qui l'a aidé pendant le travail. Pour obtenir ces informations, nous pouvons joindre les fonctions newborns et midwives en se basant sur l'ID de la sage-femme, qui est disponible dans les deux tables : SELECT n.id, n.mother_name, m.name AS midwife FROM newborns n JOIN midwives m ON n.midwife_id = m.id; Pour réduire la saisie, nous utilisons des alias pour les noms de tables : n pour newborns et m pour midwives. Nous utilisons également un alias de colonne (m.name AS midwife) pour obtenir un nom de colonne significatif dans le résultat. Voici le résultat : idmother_namemidwife 12Cathrine BlackSamantha White 16Nikita MooreKathleen Webster 17Lucy MillerSamantha White 14Penelope GreenJulia Smith 15Gabriela GarciaJulia Smith Nous avons obtenu les informations que nous voulions. Cependant, vous pouvez remarquer que certains nouveau-nés (IDs 11 et 13) sont absents de notre tableau de résultats. Cela signifie que les enregistrements correspondants (c'est-à-dire les ID des sages-femmes) n'ont pas été identifiés dans la deuxième table (c'est-à-dire midwives). Si vous souhaitez conserver tous les enregistrements de la première table, vous devez utiliser LEFT JOIN. LEFT JOIN LEFT JOIN ou LEFT OUTER JOIN est utilisée pour afficher tous les enregistrements de la première table (gauche) et les enregistrements correspondants de la deuxième table (droite). Pour conserver tous les nouveau-nés dans la sortie, nous pouvons utiliser la même requête que ci-dessus, en remplaçant simplement JOIN par LEFT JOIN: SELECT n.id, n.mother_name, m.name AS midwife FROM newborns n LEFT JOIN midwives m ON n.midwife_id = m.id; Et le résultat : idmother_namemidwife 12Cathrine BlackSamantha White 14Penelope GreenJulia Smith 11Marta StewartNULL 13Julia GreyNULL 17Lucy MillerSamantha White 16Nikita MooreKathleen Webster 15Gabriela GarciaJulia Smith Nous avons maintenant tous les enregistrements de la table newborns affichés dans la sortie. En même temps, il y a deux enregistrements avec des valeurs NULL dans la colonne sage-femme. Apparemment, la sage-femme correspondante (ID 104) n'est pas listée dans les tables. midwives tables. Peut-être a-t-elle récemment commencé à travailler dans une autre maison de naissance. Super ! Mais il est également intéressant de voir s'il y a des sages-femmes dans notre maison de naissance qui n'ont pas assisté à des accouchements récents. Nous allons le découvrir en utilisant RIGHT JOIN. JOINT DROIT RIGHT JOIN ou RIGHT OUTER JOIN est utilisé pour afficher tous les enregistrements de la deuxième table (droite) et les enregistrements correspondants de la première table (gauche). Si nous voulons conserver tous les enregistrements de la table midwivenous pouvons utiliser exactement la même requête SQL que précédemment, en remplaçant simplement LEFT JOIN par RIGHT JOIN: SELECT n.id, n.mother_name, m.name AS midwife FROM newborns n RIGHT JOIN midwives m ON n.midwife_id = m.id; Notez que le RIGHT JOIN est rarement utilisé car il peut généralement être remplacé par le LEFT JOIN. Dans notre cas, nous pourrions utiliser LEFT JOIN, et intervertir l'ordre des tables, c'est-à-dire mettre midwives dans la clause FROM et newborns dans la clause LEFT JOIN. Les résultats seraient les mêmes que ceux présentés ci-dessous : idmother_namemidwife 12Cathrine BlackSamantha White 14Penelope GreenJulia Smith 15Gabriela GarciaJulia Smith 16Nikita MooreKathleen Webster 17Lucy MillerSamantha White NULLNULLSarah McCarty NULLNULLAngela Phillips Dans la table résultante, vous pouvez voir qu'il y a deux sages-femmes sans enregistrements correspondants dans la table newborns dans la table : Sarah McCarty et Angela Phillips. Il semble que ces deux sages-femmes aient le moins d'expérience et qu'elles assistent probablement les sages-femmes plus expérimentées sans se voir attribuer un rôle majeur. Remarquez également que nous ne voyons pas tous les nouveau-nés dans l'ensemble de résultats. Que faire si nous voulons garder tous les enregistrements des deux tables ? C'est dans ce cas qu'il faut utiliser FULL JOIN. FULL JOIN FULL JOIN ou FULL OUTER JOIN est utilisée pour conserver tous les enregistrements des deux tables. Ainsi, si nous voulons conserver tous les nouveau-nés et toutes les sages-femmes dans le jeu de résultats, il nous suffit de remplacer le RIGHT JOIN de notre dernier exemple par un FULL JOIN. Notez également que l'ordre des tables n'a pas d'importance avec FULL JOIN; nous pouvons intervertir la position des tables et obtenir le même résultat : SELECT n.id, n.mother_name, m.name AS midwife FROM newborns n FULL JOIN midwives m ON n.midwife_id = m.id; idmother_namemidwife 11Marta StewartNULL 12Cathrine BlackSamantha White 13Julia GreyNULL 14Penelope GreenJulia Smith 15Gabriela GarciaJulia Smith 16Nikita MooreKathleen Webster 17Lucy MillerSamantha White NULLNULLSarah McCarty NULLNULLAngela Phillips Nous avons maintenant des valeurs NULL dans toutes les colonnes ; elles indiquent que certains des enregistrements de la table de gauche n'ont pas été appariés dans la deuxième table ou que certains des enregistrements de la table de droite n'ont pas été appariés dans la première table. Tous ces principes de JOIN ne semblent pas trop difficiles, n'est-ce pas ? Pourtant, le choix du bon JOIN à utiliser est souvent un défi pour les débutants. Découvrons donc les meilleures stratégies pour maîtriser le site Les jointures en SQL. 4 façons d'apprendre Les jointures en SQL Voici quatre étapes pour maîtriser enfin les différents types de Les jointures en SQL. Apprenez les principales différences entre les types de JOIN. La première étape consiste à connaître les quatre principaux types de jointures et les règles de base pour les appliquer : JOIN affiche uniquement les enregistrements correspondants des deux tables. LEFT JOIN affiche tous les enregistrements de la table de gauche et les enregistrements correspondants de la table de droite. RIGHT JOIN affiche tous les enregistrements de la table de droite et les enregistrements correspondants de la table de gauche. FULL JOIN affiche tous les enregistrements des deux tables. Lisez des articles de qualité sur Les jointures en SQL. Une fois que vous avez appris les bases, nous vous recommandons d'examiner les détails et les cas d'utilisation des différents types de jointures. Je vous suggère de commencer par ces articles qui abordent tous les principaux types de JOIN et comprennent des explications et des exemples détaillés : Les types de jointures SQL expliqués Qu'est-ce qu'un INNER JOIN SQL ? Qu'est-ce qu'un LEFT JOIN en SQL ? Qu'est-ce que le FULL JOIN et quand l'utiliser ? 7 exemples de JOIN SQL avec des explications détaillées Utilisez notre aide-mémoire sur les JOIN en SQL. Même si vous connaissez assez bien Les jointures en SQL, il est souvent utile d'avoir un bref rappel de la syntaxe et des cas d'utilisation des différents types de JOIN. Je vous recommande d'imprimer ou de mettre en signet notre incroyable fiche de conseils sur les JOIN SQL. Il s'agit d'un guide illustré de Les jointures en SQL que vous pouvez consulter chaque fois que vous n'êtes pas sûr de savoir comment utiliser JOIN dans votre requête SQL. Entraînez-vous ! Enfin, si vous voulez vraiment maîtriser le site Les jointures en SQL, il vous faut beaucoup de pratique. Vous pouvez lire sur les défis que vous pouvez rencontrer en pratiquant Les jointures en SQL. Pour que votre première expérience avec Les jointures en SQL soit la plus agréable possible, je vous suggère de commencer par le cours interactif de LearnSQL.com. Les jointures en SQL interactif de LearnSQL.com. Ce cours pratique comprend 93 défis de codage qui couvrent tous les types importants de Les jointures en SQL. Plus précisément, vous apprendrez : Quand utiliser JOIN, LEFT JOIN, RIGHT JOIN, et FULL JOIN. Comment joindre trois tables ou plus dans une requête. Comment filtrer des données avec différents types de jointures. Comment joindre une table avec elle-même. Ce qu'est une jointure non équivoque et quand l'utiliser. Vous pouvez en savoir plus sur ce cours dans cet article de présentation. Merci de votre lecture et bon apprentissage ! Tags: sql apprendre sql sql joins