Contenido del Curso
SQL Intermedio
SQL Intermedio
Cláusula UNION
Has logrado dominar las consultas internas y ya hemos despertado el interés de un cliente que desea que escribamos consultas SQL para ellos.
Pero hay un requisito: tendremos que unir muchas tablas y trabajar con ellas. Por lo tanto, antes de sumergirnos en JOINs
, familiaricémonos con una cláusula importante: UNION
.
Repasemos brevemente los puntos clave al trabajar con UNION
:
- Número y orden de las columnas: Todas las consultas combinadas con
UNION
deben tener el mismo número de columnas, y estas columnas deben estar en el mismo orden; - Tipos de datos: Los tipos de datos de las columnas correspondientes en cada consulta deben ser compatibles;
- Filas únicas: Por defecto,
UNION
elimina las filas duplicadas. Para incluir duplicados, se utilizaUNION ALL
.
Para una mejor comprensión de cómo combinar correctamente las tablas utilizando la cláusula UNION
, he introducido una tabla adicional que contiene información sobre contractors
.
Aquí no hay mucha información, solo el first_name
, last_name
, y email
.
Así es como se ve esta tabla:
Puedes ver que esta tabla tiene similitudes con la tabla employees
. Utilizando la cláusula UNION
, podemos combinar estas dos tablas para, por ejemplo, ver una lista de todos los nombres y apellidos de empleados y contratistas involucrados en la empresa.
Para hacer esto, usaremos la cláusula UNION
:
(SELECT employee_id as id, first_name, last_name FROM employees) UNION (SELECT contractor_id as id, first_name, last_name FROM contractors) ORDER BY id
Vamos a desglosar brevemente lo que está sucediendo aquí:
Tenemos 2 consultas que devuelven 3 columnas con tipos de datos idénticos para cada columna.
Es decir, queremos ver el Id
, first_name
y last_name
de todos los participantes de la empresa.
También le pusimos un alias al Id para que las columnas en ambas consultas SELECT
tengan los mismos nombres.
Luego, usamos la cláusula UNION
para combinar el resultado de estas dos consultas SELECT
con eliminación de duplicados (aunque no tengamos duplicados).
Después de eso, utilizamos la cláusula ORDER BY
para ordenar por Id
.
Nota
Estamos ordenando por el Id, que es una columna compartida por ambas tablas.
Para entender mejor, necesitas darte cuenta de que después de combinar con la cláusula UNION
, obtenemos "una gran consulta" con la que luego podemos trabajar utilizando diferentes cláusulas; en nuestro caso, es la cláusula ORDER BY
.
Pero no podemos utilizar cláusulas como WHERE
o GROUP BY
para tablas combinadas de esta manera usando la cláusula UNION
.
Para hacer esto, necesitaremos escribir esta combinación en una subconsulta en la sección FROM
.
Así es como se verá:
SELECT id, first_name, last_name FROM ( SELECT employee_id AS id, first_name, last_name FROM employees UNION SELECT contractor_id AS id, first_name, last_name FROM contractors ) AS combined WHERE first_name = 'Jane'
Así, utilizar una consulta como una subconsulta en la sección FROM
nos abre un amplio abanico de posibilidades.
Nota:
Puede parecer desalentador al principio, pero créanme, con este conocimiento y la capacidad de usar tales estructuras, les será mucho más fácil escribir consultas complejas y realizar las tareas que se les asignen.
¡Gracias por tus comentarios!