Retour à la liste des articles Articles
8 minutes de lecture

4 façons simples d'apprendre enfin quel JOIN utiliser dans une requête 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 :

  1. newbornsCe site contient des informations de base sur les bébés nés au cours d'une période donnée.
  2. 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.

  1. 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.
  1. 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 :
  1. 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.
  1. 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 !