Retour à la liste des articles Articles
13 minutes de lecture

RIGHT JOIN en SQL : Tutoriel pour débutants

Apprenez le RIGHT JOIN, une commande cruciale pour tout spécialiste du langage SQL. Notre article décompose cette technique essentielle, aidant les débutants à naviguer sans effort et à appliquer RIGHT JOIN dans leurs requêtes de base de données.

En SQL, RIGHT JOIN (également connu sous le nom de RIGHT OUTER JOIN) est essentiel pour traiter les données de manière efficace. Cet article est un guide pour les débutants sur le SQL RIGHT JOIN, une technique essentielle pour fusionner différentes tables de données. Nous vous présenterons les spécificités de RIGHT JOIN, en expliquant en quoi elle se distingue des autres types de jointures dans la gestion des données. Rejoignez-nous pour découvrir comment la jointure droite en SQL peut améliorer vos compétences en matière de gestion de données.

Pour consolider votre compréhension des jointures, y compris la jointure droite, le cours Les jointures en SQL à l'adresse LearnSQL.fr est fortement recommandé. Ce cours interactif est conçu pour permettre aux débutants d'acquérir des compétences essentielles en SQL, afin qu'ils puissent gérer efficacement des scénarios de base de données réels.

Comprendre les jointures en SQL

En SQL, une jointure est une fonctionnalité fondamentale qui combine les données de deux tables sur la base d'une colonne correspondante. Elle est essentielle pour les tâches dans lesquelles les informations sont stockées dans différentes tables et doivent être visualisées ensemble. Par exemple, si vous disposez d'une table contenant les détails d'un employé et d'une autre contenant les données d'un département, une jointure peut vous aider à voir quel employé appartient à quel département.

Parmi les différents types de jointures, RIGHT JOIN est une technique clé. Elle n'est peut-être pas aussi couramment utilisée que INNER JOIN, mais elle est essentielle pour une bonne compréhension du langage SQL.

Présentation de nos données d'exemple

La table Restaurants

RestaurantIDNameOpeningYear
1Galactic Diner2018
2The Enchanted Fork2020
3Cove Café2019
4The Mystic Pizzeria2024

Cette table répertorie différents restaurants avec l'année de leur ouverture. Notamment, "The Mystic Pizzeria" est un restaurant qui vient d'ouvrir ses portes et qui n'a pas encore été évalué.

Tableau des évaluations

RatingIDRestaurantIDRatingReviewer
114.8Alice
224.3Bob
314.9Charlie
434.0Dana
524.2Erin
615.0Frank
714.7Georgia

Ce tableau indique les évaluations données par les clients. Les évaluations sont liées aux restaurants par leur numéro d'identification.

INNER JOIN et RIGHT JOIN en SQL

Dans cette section, nous allons explorer les principales différences entre RIGHT JOIN et INNER JOIN, deux types importants de jointures en SQL.

INNER JOIN

INNER JOIN est le type de jointure le plus courant. Il est utilisé pour combiner les lignes de deux tables. Il ne renvoie que les lignes pour lesquelles il existe une valeur correspondante dans les deux tables. Si une ligne d'une table n'a pas de correspondance dans l'autre table, elle n'apparaîtra pas dans l'ensemble des résultats.

Appliquons INNER JOIN à notre ensemble de données. Nous voulons connaître les notes attribuées à chaque restaurant.

SELECT 
  Restaurants.Name, 
  Restaurants.OpeningYear, 
  Ratings.Rating, 
  Ratings.Reviewer
FROM Restaurants
INNER JOIN Ratings 
ON Restaurants.RestaurantID = Ratings.RestaurantID;

Cette requête joint la table Restaurants avec la table Ratings sur la base de leur colonne commune RestaurantID. Dans la clause FROM, nous énumérons la première table. Nous utilisons ensuite le mot-clé INNER JOIN, suivi de la clause ON et de la condition de jointure. La condition de jointure détermine la manière dont nous combinons les informations des deux tables : dans ce cas, les lignes doivent avoir le même identifiant de restaurant.

Voici le résultat de la requête :

RatingIDRestaurantIDRatingReviewer
114.8Alice
224.3Bob
314.9Charlie
434.0Dana
524.2Erin
615.0Frank
714.7Georgia

Dans ce résultat, chaque entrée de la table Restaurants qui a une note correspondante dans la table Ratings est affichée. Notamment, "The Mystic Pizzeria" est absent du résultat. Bien qu'elle figure dans le tableau Restaurants il n'y a pas d'entrée correspondante dans le tableau Ratings Il est donc exclu des résultats. Cela illustre la nature sélective de INNER JOIN, qui se concentre sur l'intersection de données entre deux tables.

RIGHT JOIN (RIGHT OUTER JOIN)

RIGHT JOINégalement connue sous le nom de RIGHT OUTER JOIN, renvoie toutes les lignes de la table de droite (énumérées après JOIN), ainsi que les lignes correspondantes de la table de gauche (énumérées après FROM). S'il n'y a pas de correspondance, l'ensemble de résultats comprendra toujours la ligne de la table de droite. Cependant, les informations manquantes de la table de gauche seront affichées sous la forme NULL.

Un site RIGHT JOIN peut renvoyer plus de lignes qu'un site INNER JOIN si des lignes de la table de droite n'ont pas de correspondance dans la table de gauche.

Syntaxe du RIGHT JOIN

La syntaxe de base d'un RIGHT JOIN en SQL est la suivante :

SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

Ici, table1 et table2 sont les deux tables que vous joignez. La clause ON spécifie la condition sur laquelle les tables doivent être jointes. En général, il s'agit d'une égalité entre les deux colonnes sélectionnées.

Exemple de base de RIGHT JOIN

Pour illustrer cet exemple, considérons un scénario dans lequel nous souhaitons dresser la liste de tous les restaurants et de leurs notes. Nous voulons nous assurer que chaque restaurant est inclus dans le résultat de notre requête, qu'il ait été noté ou non. Il s'agit d'un cas d'utilisation parfait pour RIGHT JOIN, étant donné que notre objectif est de conserver tous les enregistrements de la table Restaurants table.

SELECT 
  Restaurants.Name, 
  Restaurants.OpeningYear, 
  Ratings.Rating, 
  Ratings.Reviewer
FROM Ratings
RIGHT JOIN Restaurants 
ON Ratings.RestaurantID = Restaurants.RestaurantID;

Voici les résultats :

NameOpeningYearRatingReviewer
Galactic Diner20184.8Alice
The Enchanted Fork20204.3Bob
Galactic Diner20184.9Charlie
Cove Café20194.0Dana
The Enchanted Fork20204.2Erin
Galactic Diner20185.0Frank
Galactic Diner20184.7Georgia
The Mystic Pizzeria2024NULLNULL

Fonctionnement du RIGHT JOIN

Logiquement, un RIGHT JOIN fonctionne en examinant d'abord toutes les lignes de la table de droite, qui, dans notre exemple, est la table Restaurants Dans notre exemple, il s'agit de la table Pour chaque ligne de ce tableau, il tente de trouver une ligne correspondante dans le tableau de gauche (Ratings), sur la base de l'expression d'égalité définie dans la clause ON.

  • Lignes correspondantes: Pour chaque restaurant ayant reçu au moins une évaluation, la requête combine les détails du restaurant avec les détails de son évaluation. Cela inclut des restaurants comme "Galactic Diner" et "Cove Café", qui ont des entrées correspondantes dans la base de données des restaurants. Ratings
  • Lignes non correspondantes: Le restaurant "The Mystic Pizzeria" n'a pas encore reçu d'évaluation, mais la requête l'inclut tout de même dans le résultat. Cependant, comme il n'y a pas d'évaluation correspondante, les colonnes Rating et Reviewer pour ce restaurant sont remplies avec NULL. RIGHT JOIN est donc particulièrement utile lorsque l'objectif est de conserver une vue complète des enregistrements d'une table, indépendamment de l'existence d'enregistrements correspondants dans l'autre table.

La principale différence entre RIGHT JOIN et INNER JOIN

La principale différence entre ces deux types de jointures réside dans la manière dont elles traitent les enregistrements non concordants :

  • INNER JOIN exclut les lignes qui n'ont pas de correspondance dans les deux tables.
  • RIGHT JOIN inclut toutes les lignes de la table de droite, qu'il y ait ou non une correspondance dans la table de gauche. Il remplit toutes les valeurs manquantes par des NULL.

Il est essentiel de comprendre cette distinction pour décider du type de jointure à utiliser en fonction des exigences de votre requête en matière de recherche de données.

RIGHT JOIN et LEFT JOIN

Le concept de RIGHT JOIN est plus facile à saisir lorsque vous comprenez sa relation avec LEFT JOIN. Essentiellement, RIGHT JOIN et LEFT JOIN sont les deux faces d'une même pièce. Alors que LEFT JOIN renvoie toutes les lignes de la table de gauche et les lignes correspondantes de la table de droite, RIGHT JOIN fait l'inverse. Il renvoie toutes les lignes de la table de droite et les lignes correspondantes de la table de gauche.

Dans la syntaxe SQL, le passage d'une requête de RIGHT JOIN à LEFT JOIN (ou vice versa) est aussi simple que l'inversion de l'ordre des tables dans la jointure et le changement du type de jointure. Cette double nature les rend fonctionnellement similaires, mais en mettant l'accent sur des tables différentes dans l'opération de jointure.

La requête de l'exemple précédent pourrait également être écrite avec LEFT JOIN:

SELECT 
  Restaurants.Name, 
  Restaurants.OpeningYear, 
  Ratings.Rating, 
  Ratings.Reviewer
FROM Restaurants 
LEFT JOIN Ratings
ON Ratings.RestaurantID = Restaurants.RestaurantID;

Nous avons remplacé RIGHT JOIN par LEFT JOIN et modifié l'ordre des tables. La requête renvoie le même résultat que notre exemple RIGHT JOIN.

Pourquoi le LEFT JOIN est-il plus courant ?

Dans la pratique, LEFT JOIN est utilisé plus fréquemment que RIGHT JOIN. Cette préférence est largement due à la façon dont les gens pensent et structurent naturellement leurs requêtes SQL. En règle générale, les utilisateurs de SQL commencent par une table primaire (la table de gauche dans un site LEFT JOIN), puis apportent des données supplémentaires provenant d'autres tables en fonction de leurs besoins.

Comme l'ordre de lecture de gauche à droite correspond à la manière dont les requêtes sont souvent conceptualisées et écrites, LEFT JOIN semble plus intuitif. Cela ne rend pas RIGHT JOIN moins important ; il est simplement moins utilisé en raison du flux naturel de développement des requêtes SQL.

Quand utiliser le RIGHT JOIN

Bien que moins courant, RIGHT JOIN a sa place. Elle est particulièrement utile dans les scénarios où votre point de départ est la donnée secondaire (la table de droite) et où vous cherchez à inclure ou à étudier sa relation avec la donnée primaire (la table de gauche). Soustanding both LEFT and RIGHT JOINajoute de la flexibilité à vos compétences en matière d'interrogation SQL, vous permettant d'aborder les problèmes de données sous différents angles.

Exemples et explications de RIGHT JOIN

L'utilisation des balises Restaurants et Ratings permutons les tableaux pour fournir des exemples qui expliquent le résultat de RIGHT JOIN - en se concentrant sur l'inclusion de tous les restaurants, qu'ils aient des évaluations ou non.

Exemple 1 : Restaurants dont la note moyenne est supérieure à 4,5

Nous voulons dresser la liste de tous les restaurants dont la note moyenne est supérieure à 4,5. Nous voulons inclure leurs notes (si elles sont disponibles).

SELECT 
  Restaurants.Name, 
  AVG(Ratings.Rating) AS AverageRating
FROM Restaurants
RIGHT JOIN Ratings 
ON Restaurants.RestaurantID = Ratings.RestaurantID
GROUP BY Restaurants.Name
HAVING AVG(Ratings.Rating) > 4.5;

Comment cela fonctionne-t-il ?

  • Cette requête associe la table Ratings à la table Restaurants à l'aide d'une adresse RIGHT JOIN.
  • Elle calcule l'évaluation moyenne de chaque restaurant à l'aide de la fonction AVG()
  • Elle filtre pour n'inclure que les restaurants dont la note moyenne est supérieure à 4,5. Elle utilise la clause HAVING qui s'applique aux résultats agrégés.

Résultat

NameAverageRating
Galactic Diner4.85

Explication

Le "Galactic Diner" est le seul restaurant dont la moyenne d'évaluation est supérieure à 4,5. Le deuxième restaurant le mieux noté est "The Enchanted Fork" ; comme sa note moyenne est de 4,25, il n'apparaît pas dans le résultat final.

Exemple 2 : Restaurants sans notes

Objectif : Dresser la liste de tous les restaurants qui n'ont reçu aucune note.

Requête SQL

SELECT 
  Restaurants.Name, 
  Restaurants.OpeningYear
FROM Ratings
RIGHT JOIN Restaurants 
ON Ratings.RestaurantID = Restaurants.RestaurantID
WHERE Ratings.Rating IS NULL;

Fonctionnement

  • Cette requête utilise une adresse RIGHT JOIN pour s'assurer que tous les restaurants sont inclus, même ceux qui n'ont pas d'entrées correspondantes dans la base de données des restaurants. Ratings
  • Elle filtre les restaurants qui n'ont pas été évalués en vérifiant la présence de NULL dans le champ Ratings

Résultat

NameOpeningYear
The Mystic Pizzeria2024

Explication

Le restaurant "The Mystic Pizzeria" apparaît seul ici, car il est le seul à ne pas avoir été évalué. Il s'agit peut-être d'un nouveau restaurant qui n'a pas encore été évalué. Cet exemple montre l'efficacité de RIGHT JOIN pour inclure des restaurants indépendamment de leur évaluation.

Exemple 3 : Le restaurant le mieux noté

Objectif : Identifier le(s) restaurant(s) ayant le plus grand nombre d'évaluations comme indicateur de popularité.

Requête SQL

SELECT 
  Restaurants.Name, 
  COUNT(Ratings.RatingID) AS NumberOfRatings
FROM Ratings
RIGHT JOIN Restaurants 
ON Ratings.RestaurantID = Restaurants.RestaurantID
GROUP BY Restaurants.Name
ORDER BY NumberOfRatings DESC
LIMIT 1;

Fonctionnement

  • En effectuant une recherche à l'adresse RIGHT JOIN, la requête compte les évaluations pour chaque restaurant, ce qui garantit que tous les restaurants sont pris en compte.
  • Elle ordonne les résultats pour mettre en évidence le restaurant ayant le plus grand nombre d'évaluations.

Résultat

NameNumberOfRatings
Galactic Diner5

Explication

"Galactic Diner" apparaît comme le restaurant le mieux noté, ce qui témoigne de sa popularité. Ce scénario utilise RIGHT JOIN pour retourner tous les restaurants, puis exploite les fonctions d'agrégation pour déduire celui qui a reçu le plus d'avis.

Conseils pratiques pour des RIGHT JOINs efficaces

Enfin, nous partagerons des conseils pratiques pour vous aider à utiliser efficacement RIGHT JOINen SQL.

Comprendre l'ordre des tables

  • Concentration sur la bonne table : dans un site RIGHT JOIN, l'accent est mis sur la bonne table. La bonne table est celle qui sera entièrement représentée dans les résultats. Veillez à ce que la table dont vous souhaitez conserver toutes les données, indépendamment de toute correspondance dans l'autre table, soit placée du côté droit de la jointure.
  • Visualisation des données : Avant de rédiger votre requête, visualisez ou dessinez les tables et leurs relations. Cela peut vous aider à identifier clairement la table qui doit être placée à droite.

Traitement des valeurs NULL

  • Attendez-vous à ce que NULLs : Dans une requête RIGHT JOIN, les lignes de la table de droite qui ne correspondent à aucune ligne de la table de gauche se traduiront par des valeurs NULL dans les colonnes de la table de gauche. Préparez-vous à traiter ces valeurs NULL dans votre requête, soit en les filtrant, soit en les utilisant dans votre analyse.

Combinaison de RIGHT JOIN avec d'autres clauses

  • Utilisation d'agrégats et de GROUP BY: Les fonctions d'agrégation et GROUP BY peuvent être utilisées efficacement avec RIGHT JOINs pour résumer des données, par exemple pour trouver les restaurants dont la note moyenne est de 4,5 ou plus, comme le montre l'exemple 1.
  • Filtrez soigneusement: Lorsque vous utilisez les clauses WHERE avec RIGHT JOINs, n'oubliez pas que les filtres sur la table de gauche peuvent exclure des lignes, réduisant ainsi l'efficacité de RIGHT JOIN. Les filtres sur la table de droite excluront des lignes de la table de droite ; ils peuvent également avoir un impact sur les lignes correspondantes de la table de gauche. Cela a été illustré dans l'exemple 2, la requête qui affiche les restaurants sans les évaluations.

Éviter les erreurs courantes avec la jointure droite

  • Ne le confondez pas avec LEFT JOIN: Veillez à ne pas confondre la logique de LEFT JOIN avec celle de RIGHT JOIN. Bien qu'ils soient similaires, leur application et leurs résultats peuvent être très différents en raison de l'ordre des tables.
  • Vérifiez les produits cartésiens non intentionnels: Faites attention aux produits cartésiens involontaires, c'est-à-dire lorsque vous obtenez un ensemble de résultats beaucoup plus important que prévu. Cela peut se produire si la condition de jointure est mal spécifiée ou omise.

Aller plus loin avec les jointures droites

La meilleure façon de se familiariser avec RIGHT JOIN est de pratiquer. Commencez par suivre notre cours interactif Les jointures en SQL interactif. Il contient plus de 90 exercices pratiques pour pratiquer tous les types importants de Les jointures en SQL qui sont largement utilisés dans SQL, y compris RIGHT JOIN.

Vous pouvez également télécharger l'aide-mémoire Les jointures en SQL . Il s'agit d'un guide de référence pratique pour les commandes SQL courantes, y compris RIGHT JOIN. Il est utile lorsque vous avez besoin de vous rappeler rapidement la syntaxe et les meilleures pratiques, et il peut vous aider considérablement à utiliser Les jointures en SQL lorsque vous écrivez des requêtes.

Lisez nos articles sur la façon de pratiquer Les jointures en SQL et SQL Joins : 12 questions pratiques avec des réponses détaillées.

Si vous souhaitez vraiment développer vos compétences en SQL, essayez notre plan Tout à vie . Il vous donne accès à tous nos cours SQL actuels et futurs. Chaque mois, nous publions un nouveau cours pratique sur SQL. Nous proposons des cours pour tous les niveaux de compétence SQL et dans les quatre dialectes SQL les plus populaires.

Continuez à apprendre et à explorer pour libérer tout le potentiel de SQL dans vos efforts d'analyse de données !