15th Mar 2024 13 minutes de lecture RIGHT JOIN en SQL : Tutoriel pour débutants Radu Gheorghiu join sql join Table des matières Comprendre les jointures en SQL Présentation de nos données d'exemple La table Restaurants Tableau des évaluations INNER JOIN et RIGHT JOIN en SQL INNER JOIN RIGHT JOIN (RIGHT OUTER JOIN) Syntaxe du RIGHT JOIN Exemple de base de RIGHT JOIN Fonctionnement du RIGHT JOIN La principale différence entre RIGHT JOIN et INNER JOIN RIGHT JOIN et LEFT JOIN Pourquoi le LEFT JOIN est-il plus courant ? Quand utiliser le RIGHT JOIN Exemples et explications de RIGHT JOIN Exemple 1 : Restaurants dont la note moyenne est supérieure à 4,5 Comment cela fonctionne-t-il ? Résultat Explication Exemple 2 : Restaurants sans notes Requête SQL Fonctionnement Résultat Explication Exemple 3 : Le restaurant le mieux noté Requête SQL Fonctionnement Résultat Explication Conseils pratiques pour des RIGHT JOINs efficaces Comprendre l'ordre des tables Traitement des valeurs NULL Combinaison de RIGHT JOIN avec d'autres clauses Éviter les erreurs courantes avec la jointure droite Aller plus loin avec les jointures droites 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 ! Tags: join sql join