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.