SQL - Left Join vs Right Join : Un guide complet pour les débutants

Bonjour à tous, aspirants passionnés de SQL ! Je suis ravi de vous guider dans cette excitante aventure à travers le monde des jointures SQL. En tant que quelqu'un qui enseigne l'informatique depuis des années, je peux vous assurer que maîtriser les jointures, c'est comme déverrouiller un superpouvoir dans le domaine des bases de données. Alors, plongeons ensemble et dévoilons les mystères des Left Join et Right Join !

SQL - Left Join vs Right Join

Comprendre les jointures : les bases

Avant de nous plonger dans les détails des Left et Right Joins, faisons un rappel rapide sur ce qu'est une jointure en SQL. Imaginez que vous organisez une fête et que vous avez deux listes : une avec les noms des invités et une autre avec leurs boissons favorites. Les jointures sont comme des baguettes magiques qui vous aident à combiner ces listes de différentes manières pour obtenir les informations dont vous avez besoin.

Fonctionnement du Left Join

Qu'est-ce qu'un Left Join ?

Un Left Join est comme inviter tout le monde sur votre liste d'invités à la fête, peu importe que vous connaissiez leur boisson favorite ou non. Il renvoie tous les enregistrements de la table de gauche (la première table mentionnée dans la requête) et les enregistrements correspondants de la table de droite.

Syntaxe du Left Join

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

Exemple de Left Join

Créons deux tables simples pour illustrer cela :

CREATE TABLE Guests (
GuestID INT PRIMARY KEY,
GuestName VARCHAR(50)
);

CREATE TABLE Drinks (
DrinkID INT PRIMARY KEY,
GuestID INT,
FavoriteDrink VARCHAR(50)
);

INSERT INTO Guests (GuestID, GuestName) VALUES
(1, 'Alice'),
(2, 'Bob'),
(3, 'Charlie'),
(4, 'David');

INSERT INTO Drinks (DrinkID, GuestID, FavoriteDrink) VALUES
(1, 1, 'Mojito'),
(2, 2, 'Beer'),
(3, 3, 'Wine');

Maintenant, utilisons un Left Join pour obtenir tous les invités et leurs boissons favorites (si elles sont connues) :

SELECT Guests.GuestName, Drinks.FavoriteDrink
FROM Guests
LEFT JOIN Drinks ON Guests.GuestID = Drinks.GuestID;

Résultat :

GuestName FavoriteDrink
Alice Mojito
Bob Beer
Charlie Wine
David NULL

Comme vous pouvez le voir, David apparaît dans le résultat même si nous ne connaissons pas sa boisson favorite. C'est la magie du Left Join !

Fonctionnement du Right Join

Qu'est-ce qu'un Right Join ?

Un Right Join est comme se concentrer sur la liste des boissons et voir quels invités préfèrent chaque boisson. Il renvoie tous les enregistrements de la table de droite et les enregistrements correspondants de la table de gauche.

Syntaxe du Right Join

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

Exemple de Right Join

Utilisons nos tables précédentes pour effectuer un Right Join :

SELECT Guests.GuestName, Drinks.FavoriteDrink
FROM Guests
RIGHT JOIN Drinks ON Guests.GuestID = Drinks.GuestID;

Résultat :

GuestName FavoriteDrink
Alice Mojito
Bob Beer
Charlie Wine

Notez que David n'apparaît pas dans ce résultat car il n'a pas de boisson favorite répertoriée.

Left Join vs Right Join

Maintenant que nous avons vu les deux types de jointures en action, comparons-les côte à côte :

Aspect Left Join Right Join
Focus Tous les enregistrements de la table de gauche Tous les enregistrements de la table de droite
Valeurs NULL Dans les colonnes de la table de droite pour les non correspondances Dans les colonnes de la table de gauche pour les non correspondances
Cas d'utilisation Lorsque vous voulez tous les enregistrements de la table principale Lorsque vous voulez tous les enregistrements de la table jointe
Taille du jeu de résultats Toujours inclus tous les enregistrements de la table de gauche Toujours inclus tous les enregistrements de la table de droite

Quand utiliser Left Join vs Right Join

  1. Utilisez Left Join lorsque :
  • Vous voulez conserver tous les enregistrements de la table principale (gauche).
  • Vous êtes d'accord pour avoir des valeurs NULL pour les enregistrements non correspondants de la table de droite.
  1. Utilisez Right Join lorsque :
  • Vous voulez conserver tous les enregistrements de la table secondaire (droite).
  • Vous êtes d'accord pour avoir des valeurs NULL pour les enregistrements non correspondants de la table de gauche.

Astuce Pro

Au fil des ans, j'ai remarqué que de nombreux développeurs préfèrent utiliser des Left Joins plutôt que des Right Joins. Pourquoi ? C'est souvent plus intuitif à lire et à comprendre. Vous pouvez toujours réécrire un Right Join comme un Left Join en inversant simplement l'ordre des tables. Alors, si vous trouvez les Right Joins confus, n'hésitez pas à vous en tenir aux Left Joins !

Exercise Pratique

Mettons en pratique nos connaissances avec un exercice amusant. Imaginez que vous organisez un club de lecture. Vous avez deux tables : Members et Books.

CREATE TABLE Members (
MemberID INT PRIMARY KEY,
MemberName VARCHAR(50)
);

CREATE TABLE Books (
BookID INT PRIMARY KEY,
MemberID INT,
BookTitle VARCHAR(100)
);

INSERT INTO Members (MemberID, MemberName) VALUES
(1, 'Emma'),
(2, 'James'),
(3, 'Sophia'),
(4, 'Oliver');

INSERT INTO Books (BookID, MemberID, BookTitle) VALUES
(1, 1, 'Pride and Prejudice'),
(2, 2, '1984'),
(3, 2, 'To Kill a Mockingbird'),
(4, 3, 'The Great Gatsby');

Essayez ces requêtes :

  1. Left Join pour obtenir tous les membres et leurs livres (si disponibles) :
SELECT Members.MemberName, Books.BookTitle
FROM Members
LEFT JOIN Books ON Members.MemberID = Books.MemberID;
  1. Right Join pour obtenir tous les livres et leurs propriétaires (si disponibles) :
SELECT Members.MemberName, Books.BookTitle
FROM Members
RIGHT JOIN Books ON Members.MemberID = Books.MemberID;

Comparez les résultats. Pouvez-vous voir les différences ?

Conclusion

Félicitations ! Vous avez maintenant maîtrisé l'art des Left et Right Joins en SQL. Souvenez-vous, la pratique rend parfait, alors n'hésitez pas à expérimenter avec ces jointures dans différentes situations.

En guise de conclusion, je dis toujours à mes élèves : "Les jointures SQL sont comme des pièces de puzzle. Plus vous les utilisez, mieux vous deviendrez à assembler le grand tableau de vos données !"

Bonne requête, et que vos jointures soient toujours parfaites !

Credits: Image by storyset