SQL - Right Join : Un guide complet pour les débutants
Bienvenue, futurs magiciens des bases de données ! Aujourd'hui, nous plongeons dans le monde magique des joints droites (Right Joins) en SQL. Ne vous inquiétez pas si vous n'avez jamais écrit une ligne de code auparavant - je serai votre guide amical tout au long de ce voyage. À la fin de ce tutoriel, vous joindrez des tables comme un pro !
La jointe droite en SQL : votre nouveau meilleur ami
Qu'est-ce qu'une jointe droite ?
Commençons par les bases. Une jointe droite est comme inviter tous vos amis d'un groupe (disons le tableau de droite) à une fête, puis vérifier s'ils ont des amis communs dans un autre groupe (le tableau de gauche). S'ils en ont, c'est super ! Si non, pas de souci - ils peuvent quand même venir à la fête.
En termes SQL, une jointe droite renvoie toutes les enregistrements du tableau de droite (table2), et les enregistrements correspondants du tableau de gauche (table1). Si il n'y a pas de correspondance, le résultat est NULL du côté gauche.
Syntaxe de base
Voici à quoi ressemble une jointe droite de base :
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
Décomposons cela :
- Nous sélectionnons les colonnes que nous voulons voir
- Nous commençons avec
table1
(notre tableau de gauche) - Nous faisons une jointe droite avec
table2
(notre tableau de droite) - Nous spécifions comment ils sont connectés avec la clause ON
Un exemple simple
Imaginons que nous avons deux tableaux : Employees
et Departments
. Tous les départements n'ont pas d'employés, mais nous voulons voir tous les départements, même les vides.
SELECT Employees.Name, Departments.DepartmentName
FROM Employees
RIGHT JOIN Departments
ON Employees.DepartmentID = Departments.DepartmentID;
Cette requête montrera tous les départements, même s'ils n'ont pas d'employés. Pour les départements sans employés, la colonne Name affichera NULL.
Joindre plusieurs tableaux avec une jointe droite : plus, c'est mieux !
Parfois, deux tableaux ne suffisent pas. Disons que nous voulons ajouter des informations de salaire d'un tableau Salaries
.
SELECT e.Name, d.DepartmentName, s.Salary
FROM Employees e
RIGHT JOIN Departments d ON e.DepartmentID = d.DepartmentID
RIGHT JOIN Salaries s ON e.EmployeeID = s.EmployeeID;
Ici, nous utilisons des alias de table (e, d, s) pour rendre notre requête plus lisible. Cette requête montrera tous les départements et tous les salaires, même s'il n'y a pas de correspondance d'employés.
Astuce pro : l'ordre compte
Lorsque vous joignez plusieurs tableaux avec une jointe droite, l'ordre de vos jointures peut affecter vos résultats. Always start with the table you want to ensure is fully represented (in this case, Departments).
Jointe droite avec clause WHERE : être sélectif
Parfois, nous voulons être un peu plus sélectif avec nos données. C'est là que la clause WHERE devient utile.
SELECT e.Name, d.DepartmentName
FROM Employees e
RIGHT JOIN Departments d ON e.DepartmentID = d.DepartmentID
WHERE d.Location = 'New York';
Cette requête montrera tous les départements à New York, ainsi que tout employé dans ces départements.
Trouver les départements seuls
Vous voulez trouver des départements sans employés ? Voici comment faire :
SELECT d.DepartmentName
FROM Employees e
RIGHT JOIN Departments d ON e.DepartmentID = d.DepartmentID
WHERE e.EmployeeID IS NULL;
Cette requête utilise la jointe droite pour inclure tous les départements, puis filtre ceux où aucun employé n'a été trouvé.
Mettre tout ensemble : une situation du monde réel
Imaginons que nous gérons une base de données pour une école. Nous avons des tableaux pour les Étudiants, les Classes et les Inscriptions. Nous voulons voir toutes les classes, le nombre d'étudiants inscrits et la note moyenne.
SELECT
c.ClassName,
COUNT(s.StudentID) AS EnrolledStudents,
AVG(e.Grade) AS AverageGrade
FROM Classes c
LEFT JOIN Enrollments e ON c.ClassID = e.ClassID
LEFT JOIN Students s ON e.StudentID = s.StudentID
GROUP BY c.ClassName;
Cette requête montrera toutes les classes, même celles sans étudiants inscrits. Les fonctions COUNT et AVG géreront les valeurs NULL correctement.
Méthodes courantes de jointe droite
Voici un tableau des méthodes courantes de jointe droite que vous pourriez trouver utiles :
Méthode | Description | Exemple |
---|---|---|
Jointe droite de base | Joindre deux tableaux, en conservant tous les enregistrements du tableau de droite | SELECT * FROM table1 RIGHT JOIN table2 ON table1.id = table2.id |
Jointe droite avec WHERE | Filtre les résultats d'une jointe droite | SELECT * FROM table1 RIGHT JOIN table2 ON table1.id = table2.id WHERE table2.column = 'value' |
Jointe droite multiple | Joindre plus de deux tableaux | SELECT * FROM table1 RIGHT JOIN table2 ON table1.id = table2.id RIGHT JOIN table3 ON table2.id = table3.id |
Jointe droite avec USING | Simplifie la condition de jointure lorsque les noms de colonne sont identiques | SELECT * FROM table1 RIGHT JOIN table2 USING (id) |
Jointe droite avec GROUP BY | Groupe les résultats d'une jointe droite | SELECT table2.column, COUNT(*) FROM table1 RIGHT JOIN table2 ON table1.id = table2.id GROUP BY table2.column |
Souvenez-vous, la pratique rend parfait ! N'ayez pas peur d'expérimenter avec ces requêtes sur votre propre base de données. Bon codage, et que la jointure soit avec vous !
Credits: Image by storyset