Introducció
En SQL, l'operació RIGHT JOIN (també coneguda com a RIGHT OUTER JOIN) s'utilitza per combinar files de dues taules basant-se en una condició comuna. A diferència del LEFT JOIN, que retorna totes les files de la taula esquerra i les files coincidents de la taula dreta, el RIGHT JOIN retorna totes les files de la taula dreta i les files coincidents de la taula esquerra. Si no hi ha cap coincidència, les columnes de la taula esquerra contindran valors NULL.
Sintaxi
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
Explicació de la Sintaxi
SELECT column_name(s): Especifica les columnes que vols seleccionar.
FROM table1: Especifica la primera taula.
RIGHT JOIN table2: Especifica la segona taula i indica que es farà un RIGHT JOIN.
ON table1.column_name = table2.column_name: Defineix la condició de combinació entre les dues taules.
Exemple Pràctic
Suposem que tenim dues taules: Employees i Departments.
Taula Employees
| EmployeeID |
Name |
DepartmentID |
| 1 |
Alice |
1 |
| 2 |
Bob |
2 |
| 3 |
Charlie |
3 |
Taula Departments
| DepartmentID |
DepartmentName |
| 1 |
HR |
| 2 |
IT |
| 4 |
Marketing |
Consulta amb RIGHT JOIN
SELECT Employees.EmployeeID, Employees.Name, Departments.DepartmentName
FROM Employees
RIGHT JOIN Departments
ON Employees.DepartmentID = Departments.DepartmentID;
Resultat
| EmployeeID |
Name |
DepartmentName |
| 1 |
Alice |
HR |
| 2 |
Bob |
IT |
| NULL |
NULL |
Marketing |
Explicació del Resultat
- La fila amb
DepartmentID 1 (HR) té una coincidència amb l'empleat Alice.
- La fila amb
DepartmentID 2 (IT) té una coincidència amb l'empleat Bob.
- La fila amb
DepartmentID 4 (Marketing) no té cap coincidència a la taula Employees, per tant, les columnes EmployeeID i Name contenen valors NULL.
Exercicis Pràctics
Exercici 1
Descripció: Tenim dues taules, Orders i Customers. Utilitza un RIGHT JOIN per obtenir una llista de totes les comandes, incloent-hi els clients que no tenen comandes.
Taula Orders
| OrderID |
CustomerID |
OrderDate |
| 101 |
1 |
2023-01-01 |
| 102 |
2 |
2023-01-02 |
| 103 |
3 |
2023-01-03 |
Taula Customers
| CustomerID |
CustomerName |
| 1 |
John |
| 2 |
Jane |
| 4 |
Mike |
Consulta
SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName
FROM Orders
RIGHT JOIN Customers
ON Orders.CustomerID = Customers.CustomerID;
Resultat Esperat
| OrderID |
OrderDate |
CustomerName |
| 101 |
2023-01-01 |
John |
| 102 |
2023-01-02 |
Jane |
| NULL |
NULL |
Mike |
Exercici 2
Descripció: Tenim dues taules, Products i Suppliers. Utilitza un RIGHT JOIN per obtenir una llista de tots els proveïdors, incloent-hi els productes que no tenen proveïdors.
Taula Products
| ProductID |
ProductName |
SupplierID |
| 201 |
Laptop |
1 |
| 202 |
Mouse |
2 |
| 203 |
Keyboard |
3 |
Taula Suppliers
| SupplierID |
SupplierName |
| 1 |
Supplier A |
| 2 |
Supplier B |
| 4 |
Supplier C |
Consulta
SELECT Products.ProductID, Products.ProductName, Suppliers.SupplierName
FROM Products
RIGHT JOIN Suppliers
ON Products.SupplierID = Suppliers.SupplierID;
Resultat Esperat
| ProductID |
ProductName |
SupplierName |
| 201 |
Laptop |
Supplier A |
| 202 |
Mouse |
Supplier B |
| NULL |
NULL |
Supplier C |
Errors Comuns
- Oblidar la condició de combinació (
ON): Sense una condició de combinació, el RIGHT JOIN no sabrà com combinar les files de les dues taules.
- Confondre
RIGHT JOIN amb LEFT JOIN: Recorda que el RIGHT JOIN retorna totes les files de la taula dreta, mentre que el LEFT JOIN retorna totes les files de la taula esquerra.
Conclusió
El RIGHT JOIN és una eina poderosa per combinar dades de dues taules, assegurant que totes les files de la taula dreta siguin retornades, independentment de si tenen coincidències a la taula esquerra. Això és especialment útil quan necessites assegurar-te que totes les entrades d'una taula específica siguin incloses en els resultats de la consulta. Practica amb diferents conjunts de dades per familiaritzar-te amb el seu comportament i aplicacions.