Introducció
El FULL OUTER JOIN és una operació en SQL que combina els resultats de l'INNER JOIN, el LEFT JOIN i el RIGHT JOIN. Aquesta operació retorna totes les files quan hi ha una coincidència en qualsevol de les taules, i omple amb NULL les columnes que no tenen coincidència en l'altra taula.
Sintaxi
La sintaxi bàsica per a un FULL OUTER JOIN és la següent:
SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;
Explicació
SELECT column_name(s)
: Especifica les columnes que vols seleccionar.FROM table1
: Especifica la primera taula.FULL OUTER JOIN table2
: Especifica la segona taula i indica que es farà un FULL OUTER JOIN.ON table1.column_name = table2.column_name
: Especifica la condició de la unió.
Exemple Pràctic
Suposem que tenim dues taules, clients
i comandes
, amb les següents dades:
clients
client_id | nom |
---|---|
1 | Anna |
2 | Bernat |
3 | Carles |
comandes
comanda_id | client_id | producte |
---|---|---|
101 | 1 | Ordinador |
102 | 2 | Telèfon |
103 | 4 | Tauleta |
Volem obtenir una llista de tots els clients i les seves comandes, incloent-hi els clients que no tenen comandes i les comandes que no tenen clients associats.
SELECT clients.client_id, clients.nom, comandes.comanda_id, comandes.producte FROM clients FULL OUTER JOIN comandes ON clients.client_id = comandes.client_id;
Resultat:
client_id | nom | comanda_id | producte |
---|---|---|---|
1 | Anna | 101 | Ordinador |
2 | Bernat | 102 | Telèfon |
3 | Carles | NULL | NULL |
NULL | NULL | 103 | Tauleta |
Exercici Pràctic
Enunciat
Dades les següents taules empleats
i projectes
, escriu una consulta que utilitzi FULL OUTER JOIN per obtenir una llista de tots els empleats i els seus projectes, incloent-hi els empleats que no tenen projectes i els projectes que no tenen empleats associats.
empleats
empleat_id | nom |
---|---|
1 | Marta |
2 | Joan |
3 | Laura |
projectes
projecte_id | empleat_id | projecte |
---|---|---|
201 | 1 | Projecte A |
202 | 3 | Projecte B |
203 | 4 | Projecte C |
Solució
SELECT empleats.empleat_id, empleats.nom, projectes.projecte_id, projectes.projecte FROM empleats FULL OUTER JOIN projectes ON empleats.empleat_id = projectes.empleat_id;
Resultat esperat:
empleat_id | nom | projecte_id | projecte |
---|---|---|---|
1 | Marta | 201 | Projecte A |
2 | Joan | NULL | NULL |
3 | Laura | 202 | Projecte B |
NULL | NULL | 203 | Projecte C |
Errors Comuns
- Oblidar la clàusula ON: Sense la clàusula ON, SQL no sabrà com unir les taules.
- Confondre FULL OUTER JOIN amb altres tipus de JOIN: Assegura't d'entendre la diferència entre INNER JOIN, LEFT JOIN, RIGHT JOIN i FULL OUTER JOIN.
Consells Addicionals
- Utilitza FULL OUTER JOIN quan necessitis combinar totes les files de dues taules, independentment de si hi ha coincidències.
- Recorda que les columnes sense coincidència es completaran amb NULL.
Conclusió
El FULL OUTER JOIN és una eina poderosa per combinar dades de dues taules, assegurant que cap fila es perdi, independentment de si hi ha coincidències. Amb la pràctica, podràs utilitzar aquesta operació per resoldre problemes complexos de combinació de dades.
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