Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Cláusula UNION | Subconsultas Anidadas
SQL Intermedio
course content

Contenido del Curso

SQL Intermedio

SQL Intermedio

1. Agrupamiento
2. Subconsultas Anidadas
3. Uniendo Tablas
4. DDL y DML en SQL

bookClá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:

  1. 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;
  2. Tipos de datos: Los tipos de datos de las columnas correspondientes en cada consulta deben ser compatibles;
  3. Filas únicas: Por defecto, UNION elimina las filas duplicadas. Para incluir duplicados, se utiliza UNION 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:

12345678
(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
copy

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á:

123456789
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'
copy

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.

1. ¿Qué columnas son necesarias al utilizar la cláusula `UNION` en SQL?
2. ¿Cómo trata la cláusula `UNION` las filas duplicadas por defecto?
¿Qué columnas son necesarias al utilizar la cláusula `UNION` en SQL?

¿Qué columnas son necesarias al utilizar la cláusula UNION en SQL?

Selecciona la respuesta correcta

¿Cómo trata la cláusula `UNION` las filas duplicadas por defecto?

¿Cómo trata la cláusula UNION las filas duplicadas por defecto?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 5
some-alt