Uniu tres taules en SQL

Uniu Tres Taules En Sql



A les bases de dades relacionals, la tasca de recuperar les dades de diverses taules és extremadament habitual. Depenent del resultat objectiu, això implica unir diverses taules en una sola unitat i obtenir les dades resultants.

Quan es tracta d'unions, la majoria de nosaltres treballem principalment amb el límit de dues taules i tal. No obstant això, és habitual haver d'unir tres taules per obtenir un disseny i una visió de dades més significatius. Preneu per exemple on voleu recuperar una llista de pel·lícules, el seu inventari de lloguer corresponent i els detalls reals del lloguer. Cadascuna d'aquestes unitats, com ara pel·lícules, inventari i detalls de lloguer, es troben en taules individuals.

En aquest tutorial, us guiarem a través de les diferents combinacions i tècniques que podeu utilitzar per unir tres taules en SQL.







Requisits:

Amb finalitats de demostració, utilitzarem la versió 80 de MySQL i la base de dades d'exemple Sakila. Per seguir, podeu descarregar i configurar la base de dades Sakila al vostre servidor MySQL. No dubteu a utilitzar qualsevol altre conjunt de dades que considereu aplicable.



Tipus d'unions en SQL

Abans d'arribar a l'aplicació de les unions, comencem discutint els diferents tipus d'unions que estan disponibles a les bases de dades SQL.



COMBINACIÓ INTERNA

El primer tipus d'unió és un INNER JOIN. Aquest tipus d'unió només retorna les files que contenen un valor coincident a les dues taules. És un tipus d'unió molt comú i és el més simplista quan s'uneixen dues taules.





La sintaxi és la següent:

SELECCIONA columnes

DE LA taula 1

INNER JOIN taula 2 ON taula1.nom_columna = taula2.nom_columna;

UNIR-SE A L'ESQUERRA

En el cas d'un LEFT JOIN, retorna totes les files de la taula esquerra i les files coincidents de la taula dreta. Si no hi ha valors coincidents de la taula correcta, la unió afegeix els valors NULL al seu lloc.



La sintaxi és la següent:

SELECCIONA columnes

DE LA taula 1

LEFT JOIN taula 2 ON taula1.nom_columna = taula2.nom_columna;

UNIR-SE A LA DRETA

Com podeu endevinar, el RIGHT JOIN és el contrari del LEFT JOIN. Aquest tipus d'unions retorna totes les files de la taula de la dreta i només les files coincidents de la taula de l'esquerra. Si no hi ha files coincidents a la taula de l'esquerra, la unió hi afegeix els valors NULL.

La següent és la sintaxi d'un RIGHT JOIN:

SELECCIONA columnes

DE LA taula 1

RIGHT JOIN taula2 ON taula1.nom_columna = taula2.nom_columna;

UNIÓ EXTERIOR COMPLETA

El següent tipus d'unió que trobareu a les bases de dades SQL és una unió externa completa. Aquest tipus d'unió retorna totes les files quan hi ha una coincidència a les taules de la dreta o de l'esquerra. Si no hi ha cap valor coincident en cap dels dos, retorna NULL per a les columnes de la taula sense la coincidència.

A continuació es mostra la sintaxi d'un FULL OUTER JOIN:

SELECCIONA columnes

DE LA taula 1

FULL OUTER JOIN taula2 ON taula1.nom_columna = taula2.nom_columna;

És bo tenir en compte que no tots els motors de bases de dades admeten les unions exteriors completes. Per aconseguir-ho, potser haureu de treballar amb altres tipus de JOINS o subconsultes.

Exemples:

Explorem alguns exemples sobre com podem utilitzar aquests tipus d'unions per unir tres taules en SQL.

Exemple 1: Ús de l'INNER JOIN

Comencem amb un INNER JOIN. Suposem que volem recuperar una llista de pel·lícules, l'inventari de lloguer i els detalls de lloguer corresponents.

Podem utilitzar múltiples INNER JOINS a les taules associades tal com es mostra a l'exemple següent:

SELECCIONA

títol de pel·lícula,

inventory.inventory_id,

lloguer.data_lloguer

DE

pel·lícula

Inventari INNER JOIN ON

film.film_id = inventory.film_id

Lloguer INNER JOIN ON

inventory.inventory_id = lloguer.inventory_id;

A la consulta d'exemple donada, comencem unint les taules de pel·lícules i d'inventari en funció de la columna 'film_id'. A continuació, agafem el conjunt resultant i l'ajuntem amb la taula de lloguer basada en la columna 'inventory_id'.

Això garanteix que unim tres taules amb un INNER JOIN bàsic. El conjunt resultant és el següent:

Exemple 2: Ús de INNER JOIN i LEFT JOIN

Diguem que ara volem la llista de pel·lícules, la llista d'inventaris de lloguer (si n'hi ha) i els detalls de lloguer associats.

També volem assegurar-nos que encara que una pel·lícula no tingui un inventari de lloguer, encara l'incloguem al resultat. Aquí és on entren en joc els INNER JOIN i LEFT JOIN.

Considereu l'exemple següent:

SELECCIONA

títol de pel·lícula,

inventory.inventory_id,

lloguer.data_lloguer

DE

pel·lícula

Inventari INNER JOIN ON

film.film_id = inventory.film_id

Lloguer LEFT JOIN ON

inventory.inventory_id = lloguer.inventory_id;

En aquest exemple, utilitzem un INNER JOIN per unir la pel·lícula i la taula d'inventari per assegurar-nos que obtenim els títols amb l'inventari disponible. A continuació, fem servir el LEFT JOIN per unir-nos a la taula de lloguer per obtenir els detalls de lloguer si estan disponibles i NULL per a qualsevol títol que no tingui un historial de lloguer.

El conjunt resultant és el següent:

Conclusió

En aquest tutorial, hem après els diferents tipus de JOINS a SQL, com funcionen i com podem utilitzar-los per combinar tres taules.