Unión y Combinación de tablas | INNER, LEFT JOIN, UNION, INTERSECTION y EXCERT

INNER JOIN

Para explicar INNER JOIN utilizaremos una base de datos muy simple formada por dos tablas.

tabla empleados

 

departamentos

Supongamos que queremos obtener información de los empleados y sus departamentos, combinando los datos de ambas tablas.

Para hacer esto, podemos usar un INNER JOIN para unir los registros de ambas tablas en función de la columna “Departamento” que ambas tablas comparten:

SELECT e.ID, e.Nombre, d.Nombre AS Departamento 
FROM Empleados e 
INNER JOIN Departamentos d ON e.Departamento = d.ID;

Aquí, la consulta SELECT especifica que queremos seleccionar el nombre y salario de los empleados, así como el nombre del departamento al que pertenecen.

La cláusula INNER JOIN se utiliza para unir las tablas “Empleados” y “Departamentos” en función de la columna “Departamento”.

La cláusula ON especifica que estamos uniendo los registros en función del campo “Id” de la tabla “Departamentos” y del campo “Departamento” de la tabla “Empleados”.

Cuando se ejecuta esta consulta, el resultado que se obtendría sería una tabla que contiene una fila para cada empleado que tenga un registro en la tabla “Empleados” y un registro correspondiente en la tabla “Departamentos”.

ejemplo inner join

Es importante tener en cuenta que, en un INNER JOIN, sólo se devolverán las filas de ambas tablas que coinciden en la condición de unión.

 

Si un empleado no tiene un registro correspondiente en la tabla “Departamentos” (es decir, si el valor de su campo “Departamento” es nulo o no existe en la tabla “Departamentos”), esa fila NO se incluirá en el resultado final.

 

LEFT JOIN

Un Left Join en SQL es un tipo de operación que permite unir dos tablas en función de una columna común y devuelve todas las filas de la tabla de la izquierda y las filas correspondientes de la tabla de la derecha.

Si no hay una coincidencia en la tabla de la derecha, se devolverá un valor NULL.

Para entenderlo mejor, utilizaremos estas dos tablas.

tabla empleados

departamentos

 

En el ejemplo de la base de datos anterior, si quisiéramos unir las tablas “empleados” y “departamentos” utilizando un left join, la consulta SQL sería la siguiente:

SELECT e.ID, e.Nombre, d.Nombre AS Departamento 
FROM Empleados e 
LEFT JOIN Departamentos d 
ON e.Departamento = d.ID;

En esta consulta, la tabla “empleados” se encuentra a la izquierda del join y la tabla “departamentos” a la derecha.

La condición de unión es que el valor de la columna “id_departamento” en la tabla “empleados” sea igual al valor de la columna “id” en la tabla “departamentos”.

El resultado de esta consulta mostrará todas las filas de la tabla “empleados” y las filas correspondientes de la tabla “departamentos”.

ejemplo left join 1

Si un empleado no está asignado a un departamento, la información del departamento en la consulta aparecerá como NULL.

Esto se debe a que el left join devuelve todas las filas de la tabla izquierda (empleados) y cualquier fila correspondiente de la tabla derecha (departamentos) que cumpla con la condición de unión.

Si no hay una fila correspondiente en la tabla de la derecha, se completa con valores NULL.

 

En resumen, un left join es útil cuando se quiere mostrar toda la información de una tabla y también la información de otra tabla relacionada, aunque algunos registros no tengan correspondencia en esta segunda tabla.

 

UNION

La operación UNION se utiliza para combinar los resultados de dos o más consultas en una sola tabla.

Los resultados de las consultas deben tener la misma estructura de columna.

Supongamos que queremos combinar dos tablas diferentes («tabla1» y «tabla2») en una sola tabla:

SELECT columna1, columna2
FROM tabla1
UNION
SELECT columna1, columna2
FROM tabla2;

Este código devolverá los resultados de ambas consultas en una sola tabla.

 

INTERSECT

La operación INTERSECT se utiliza para combinar los resultados de dos o más consultas, pero solo devuelve las filas que aparecen en ambas consultas.

Supongamos que queremos encontrar los valores comunes de dos columnas en dos tablas diferentes («tabla1» y «tabla2»):

SELECT columna1
FROM tabla1
INTERSECT
SELECT columna1
FROM tabla2;

Este código devolverá los valores comunes de ambas.

 

EXCEPT

La operación EXCEPT se utiliza para combinar los resultados de dos o más consultas, pero solo devuelve las filas que aparecen en la primera consulta y no aparecen en la segunda consulta.

Supongamos que queremos encontrar los valores únicos de una columna en dos tablas diferentes («tabla1» y «tabla2»):

SELECT columna1
FROM tabla1
EXCEPT
SELECT columna1
FROM tabla2;

Este código devolverá los valores de la columna1 que aparecen en la tabla1 pero no aparecen en la tabla2.

Un ejemplo más detallado para explicar esto podría ser el siguiente:

Supongamos que tenemos dos tablas, «ventas2021» y «ventas2022», que contienen información de las ventas realizadas durante dos años diferentes.

Ambas tablas tienen la misma estructura de columna, con columnas para el mes, el producto y las ventas.

Queremos encontrar los productos que se vendieron en 2021 pero no en 2022. Podríamos hacer esto utilizando la operación EXCEPT de la siguiente manera:

SELECT producto
FROM ventas2021
EXCEPT
SELECT producto
FROM ventas2022;

Este código devolverá los nombres de los productos que se vendieron en 2021 pero no en 2022.

En resumen, la operación EXCEPT es muy útil cuando queremos encontrar la diferencia entre los resultados de dos o más consultas.