Unir tres tablas en SQL

Unir Tres Tablas En Sql



En las bases de datos relacionales, la tarea de recuperar datos de varias tablas es extremadamente común. Dependiendo del resultado objetivo, esto implica unir varias tablas en una sola unidad y recuperar los datos resultantes.

Cuando se trata de uniones, la mayoría de nosotros trabajamos principalmente con el límite de dos tablas y demás. Sin embargo, es común que sea necesario unir tres tablas para obtener información y un diseño de datos más significativos. Tomemos, por ejemplo, dónde desea recuperar una lista de películas, su inventario de alquiler correspondiente y los detalles reales del alquiler. Cada una de estas unidades, como películas, inventario y detalles de alquiler, se encuentran en tablas individuales.

En este tutorial, lo guiaremos a través de las diversas uniones y técnicas que puede utilizar para unir tres tablas en SQL.







Requisitos:

Para fines de demostración, utilizaremos MySQL versión 80 y la base de datos de muestra Sakila. Para seguir adelante, puede descargar y configurar la base de datos Sakila en su servidor MySQL. No dude en utilizar cualquier otro conjunto de datos que considere aplicable.



Tipos de uniones en SQL

Antes de pasar a la aplicación de las uniones, comencemos analizando los distintos tipos de uniones que están disponibles en las bases de datos SQL.



UNIR INTERNAMENTE

El primer tipo de unión es una UNIÓN INTERNA. Este tipo de combinación devuelve sólo las filas que contienen un valor coincidente en ambas tablas. Es un tipo de unión muy común y es el más simplista a la hora de unir dos tablas.





La sintaxis es la siguiente:

SELECCIONAR columnas

DE la tabla 1

UNIÓN INTERNA tabla2 EN tabla1.nombre_columna = tabla2.nombre_columna;

UNIRSE A LA IZQUIERDA

En el caso de LEFT JOIN, devuelve todas las filas de la tabla de la izquierda y las filas coincidentes de la tabla de la derecha. Si no hay valores coincidentes en la tabla derecha, la combinación agrega los valores NULL en su lugar.



La sintaxis es la siguiente:

SELECCIONAR columnas

DE la tabla 1

UNIRSE A LA IZQUIERDA tabla2 EN tabla1.nombre_columna = tabla2.nombre_columna;

ÚNETE DERECHO

Como puedes adivinar, la UNIÓN DERECHA es lo opuesto a la UNIÓN IZQUIERDA. Este tipo de combinación devuelve todas las filas de la tabla derecha y solo las filas coincidentes de la tabla izquierda. Si no hay filas coincidentes en la tabla de la izquierda, la combinación le agrega los valores NULL.

La siguiente es la sintaxis de una UNIÓN DERECHA:

SELECCIONAR columnas

DE la tabla 1

UNIRSE A LA DERECHA tabla2 EN tabla1.nombre_columna = tabla2.nombre_columna;

UNIÓN EXTERIOR COMPLETA

El siguiente tipo de unión que encontrará en las bases de datos SQL es una UNIÓN EXTERNA COMPLETA. Este tipo de combinación devuelve todas las filas cuando hay una coincidencia en la tabla derecha o izquierda. Si no hay ningún valor coincidente en ninguno de los dos, devuelve NULL para las columnas de la tabla que no coinciden.

A continuación se demuestra la sintaxis de una UNIÓN EXTERNA COMPLETA:

SELECCIONAR columnas

DE la tabla 1

UNIÓN EXTERIOR COMPLETA tabla2 EN tabla1.nombre_columna = tabla2.nombre_columna;

Es bueno tener en cuenta que no todos los motores de bases de datos admiten FULL OUTER JOINS. Para lograrlo, es posible que necesite trabajar con otros tipos de JOINS o subconsultas.

Ejemplos:

Exploremos algunos ejemplos sobre cómo podemos usar estos tipos de combinaciones para unir tres tablas en SQL.

Ejemplo 1: uso de INNER JOIN

Empezamos con una UNIÓN INTERNA. Supongamos que queremos recuperar una lista de películas, el inventario de alquiler y los detalles de alquiler correspondientes.

Podemos usar múltiples INNER JOINS en las tablas asociadas como se muestra en el siguiente ejemplo:

SELECCIONAR

título de la película,

inventario.inventario_id,

alquiler.alquiler_fecha

DE

película

Inventario de unión interna EN

película.film_id = inventario.film_id

Alquiler de UNIÓN INTERNA EN

inventario.inventory_id = alquiler.inventory_id;

En la consulta de ejemplo dada, comenzamos uniendo las tablas de película e inventario según la columna 'film_id'. Luego tomamos el conjunto resultante y lo unimos a la tabla de alquiler según la columna 'inventory_id'.

Esto asegura que unimos tres tablas con una INNER JOIN básica. El conjunto resultante es el siguiente:

Ejemplo 2: uso de INNER JOIN y LEFT JOIN

Digamos que ahora queremos la lista de películas, la lista de inventarios de alquiler (si los hay) y los detalles de alquiler asociados.

También queremos asegurarnos de que incluso si una película no tiene un inventario de alquiler, la incluyamos en el resultado. Aquí es donde entran en juego INNER JOIN y LEFT JOIN.

Considere el siguiente ejemplo:

SELECCIONAR

título de la película,

inventario.inventario_id,

alquiler.alquiler_fecha

DE

película

Inventario de unión interna EN

película.film_id = inventario.film_id

IZQUIERDA ÚNETE al alquiler EN

inventario.inventory_id = alquiler.inventory_id;

En este ejemplo, usamos INNER JOIN para unir la película y la tabla de inventario para asegurarnos de obtener los títulos con el inventario disponible. Luego usamos LEFT JOIN para unirnos a la tabla de alquiler y obtener los detalles del alquiler si están disponibles y NULL para cualquier título que no tenga un historial de alquiler.

El conjunto resultante es el siguiente:

Conclusión

En este tutorial, aprendimos sobre los distintos tipos de JOINS en SQL, cómo funcionan y cómo podemos usarlos para combinar tres tablas.