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_id1 (Anna) té una comanda d'un ordinador. - La fila amb
client_id2 (Bernat) té dues comandes: un telèfon i un teclat. - La fila amb
client_id3 (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 JOINamb unINNER JOIN.- Consell: Recorda que un
LEFT JOINretorna 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
