Introducció
En aquest tema, aprendrem sobre l'operació LEFT JOIN
en SQL, que és una de les tècniques més utilitzades per combinar dades de dues taules. El LEFT JOIN
retorna totes les files de la taula esquerra (la primera taula) i les files coincidents de la taula dreta (la segona taula). Si no hi ha cap coincidència, les files de la taula esquerra encara es mostren, però amb valors NULL
per les columnes de la taula dreta.
Sintaxi
La sintaxi bàsica per a un LEFT JOIN
és la següent:
SELECT column1, column2, ... FROM table1 LEFT JOIN table2 ON table1.common_column = table2.common_column;
Explicació de la sintaxi
SELECT column1, column2, ...
: Especifica les columnes que vols seleccionar.FROM table1
: Especifica la taula esquerra (primera taula).LEFT JOIN table2
: Especifica la taula dreta (segona taula) que es vol unir amb la taula esquerra.ON table1.common_column = table2.common_column
: Defineix la condició de la unió, és a dir, les columnes comunes que s'utilitzen per unir les dues taules.
Exemple pràctic
Suposem que tenim dues taules: clients
i comandes
.
Taula clients
client_id | nom |
---|---|
1 | Anna |
2 | Bernat |
3 | Carla |
Taula comandes
comanda_id | client_id | producte |
---|---|---|
101 | 1 | Ordinador |
102 | 2 | Telèfon |
103 | 2 | Teclat |
Volem obtenir una llista de tots els clients i les seves comandes, si en tenen. Utilitzarem un LEFT JOIN
per aconseguir-ho:
SELECT clients.client_id, clients.nom, comandes.producte FROM clients LEFT JOIN comandes ON clients.client_id = comandes.client_id;
Resultat
client_id | nom | producte |
---|---|---|
1 | Anna | Ordinador |
2 | Bernat | Telèfon |
2 | Bernat | Teclat |
3 | Carla | NULL |
Explicació del resultat
- La fila amb
client_id
1 (Anna) té una comanda d'un ordinador. - La fila amb
client_id
2 (Bernat) té dues comandes: un telèfon i un teclat. - La fila amb
client_id
3 (Carla) no té cap comanda, per tant, el valor de la columnaproducte
ésNULL
.
Exercicis pràctics
Exercici 1
Tenim les següents taules:
Taula empleats
empleat_id | nom |
---|---|
1 | Jordi |
2 | Marta |
3 | Pau |
Taula projectes
projecte_id | empleat_id | projecte |
---|---|---|
201 | 1 | Projecte A |
202 | 3 | Projecte B |
Escriu una consulta SQL per obtenir una llista de tots els empleats i els seus projectes, si en tenen.
Solució
SELECT empleats.empleat_id, empleats.nom, projectes.projecte FROM empleats LEFT JOIN projectes ON empleats.empleat_id = projectes.empleat_id;
Resultat esperat
empleat_id | nom | projecte |
---|---|---|
1 | Jordi | Projecte A |
2 | Marta | NULL |
3 | Pau | Projecte B |
Errors comuns i consells
- Error comú: No especificar correctament la condició de la unió (
ON
).- Consell: Assegura't que les columnes utilitzades en la condició de la unió són les correctes i existeixen en ambdues taules.
- Error comú: Confondre un
LEFT JOIN
amb unINNER JOIN
.- Consell: Recorda que un
LEFT JOIN
retorna totes les files de la taula esquerra, independentment de si hi ha coincidències a la taula dreta.
- Consell: Recorda que un
Conclusió
El LEFT JOIN
és una eina poderosa per combinar dades de dues taules, assegurant que totes les files de la taula esquerra es mostrin, fins i tot si no hi ha coincidències a la taula dreta. Això és especialment útil quan necessitem obtenir una llista completa d'elements d'una taula amb informació addicional d'una altra taula, si està disponible. En el proper tema, explorarem el RIGHT JOIN
, que és similar però amb un comportament lleugerament diferent.
Curs de SQL
Mòdul 1: Introducció a SQL
Mòdul 2: Consultes bàsiques de SQL
Mòdul 3: Treballar amb múltiples taules
Mòdul 4: Filtratge avançat de dades
- Utilitzar LIKE per a coincidències de patrons
- Operadors IN i BETWEEN
- Valors NULL i IS NULL
- Agrupar dades amb GROUP BY
- Clàusula HAVING
Mòdul 5: Manipulació de dades
Mòdul 6: Funcions avançades de SQL
Mòdul 7: Subconsultes i consultes niades
- Introducció a les subconsultes
- Subconsultes correlacionades
- EXISTS i NOT EXISTS
- Utilitzar subconsultes en les clàusules SELECT, FROM i WHERE
Mòdul 8: Índexs i optimització del rendiment
- Comprendre els índexs
- Crear i gestionar índexs
- Tècniques d'optimització de consultes
- Analitzar el rendiment de les consultes
Mòdul 9: Transaccions i concurrència
- Introducció a les transaccions
- Propietats ACID
- Instruccions de control de transaccions
- Gestionar la concurrència
Mòdul 10: Temes avançats
Mòdul 11: SQL en la pràctica
- Casos d'ús del món real
- Millors pràctiques
- SQL per a l'anàlisi de dades
- SQL en el desenvolupament web