Explicación y Ejemplos Prácticos de la Combinación de Consultas Usando UNION en SQL

El operador UNION en SQL es una herramienta poderosa que se utiliza para combinar los resultados de varias consultas SELECT en un solo conjunto de resultados. Al unir datos obtenidos de diferentes tablas o de diferentes condiciones dentro de la misma tabla, facilita el análisis de datos complejo y la creación de informes. En este artículo, explicaremos el uso básico de UNION, las diferencias entre UNION y UNION ALL, ejemplos prácticos y las mejores prácticas a seguir al usar estos operadores.

Índice

Uso Básico de UNION

El operador UNION se utiliza para combinar los conjuntos de resultados de dos o más consultas SELECT en uno solo. La sintaxis básica es la siguiente:

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

Puntos a Considerar al Usar UNION

Al usar UNION, debes tener en cuenta los siguientes puntos:

  • El número de columnas y los tipos de datos en cada consulta SELECT deben coincidir.
  • Los nombres de las columnas no necesitan coincidir, pero los tipos de datos sí deben hacerlo.
  • Por defecto, UNION elimina las filas duplicadas. Si deseas mantener las duplicadas, utiliza UNION ALL.

Diferencias Entre UNION y UNION ALL

En SQL, existen dos operadores, UNION y UNION ALL, que combinan los resultados de varias consultas SELECT, pero con algunas diferencias importantes.

UNION

El operador UNION elimina las filas duplicadas y devuelve un conjunto de resultados único. Es decir, si hay filas duplicadas en el conjunto de resultados combinado, estas se cuentan como una sola fila.

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

UNION ALL

El operador UNION ALL devuelve todas las filas, incluidas las duplicadas. Como no se eliminan las filas duplicadas, la consulta puede tener un mejor rendimiento que UNION.

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

Comparación de Ejemplos

Veamos un ejemplo de la diferencia entre UNION y UNION ALL usando las siguientes tablas.

Tabla 1:

idnombre
1Taro
2Hanako

Tabla 2:

idnombre
2Hanako
3Jiro
SELECT id, nombre
FROM tabla1
UNION
SELECT id, nombre
FROM tabla2;

El resultado de esta consulta:

idnombre
1Taro
2Hanako
3Jiro
SELECT id, nombre
FROM tabla1
UNION ALL
SELECT id, nombre
FROM tabla2;

El resultado de esta consulta:

idnombre
1Taro
2Hanako
2Hanako
3Jiro

El uso de UNION es efectivo cuando se desea evitar duplicados en los datos. Por otro lado, UNION ALL es adecuado cuando deseas incluir todos los datos, incluidos los duplicados, o cuando el rendimiento es una prioridad.

Ejemplo Práctico 1: Combinación de Datos de Tablas Diferentes

Veamos un ejemplo de cómo combinar datos de diferentes tablas usando el operador UNION. Aquí, obtendremos nombres e información de contacto de las tablas de empleados y clientes para crear una lista completa.

Tabla de Empleados (employees)

employee_idnombreemail
1Taro Yamadayamada@example.com
2Hanako Satosato@example.com

Tabla de Clientes (customers)

customer_idnombreemail
1Jiro Suzukisuzuki@example.com
2Ichiro Tanakatanaka@example.com

La consulta para combinar todos los nombres y direcciones de correo electrónico en una lista es la siguiente:

SELECT nombre, email
FROM employees
UNION
SELECT nombre, email
FROM customers;

Resultado de la Consulta

El resultado de esta consulta es el siguiente:

nombreemail
Taro Yamadayamada@example.com
Hanako Satosato@example.com
Jiro Suzukisuzuki@example.com
Ichiro Tanakatanaka@example.com

Como se puede ver, los nombres y direcciones de correo electrónico de empleados y clientes se han integrado en una única lista. Usar UNION permite combinar datos de diferentes tablas de manera sencilla.

Ejemplo Práctico 2: Combinación de Datos Condicionales Dentro de la Misma Tabla

Veamos un ejemplo de cómo usar UNION para combinar datos basados en diferentes condiciones dentro de la misma tabla. Aquí, combinaremos las ventas de un mes específico con las ventas totales de todos los períodos.

Tabla de Datos de Ventas (sales)

sale_idproductosale_dateamount
1Producto A2024-01-155000
2Producto B2024-02-203000
3Producto C2024-01-107000
4Producto D2024-03-052000

La consulta para combinar las ventas de enero de 2024 con las ventas de todos los períodos es la siguiente:

SELECT producto, amount, 'Enero 2024' AS periodo
FROM sales
WHERE sale_date BETWEEN '2024-01-01' AND '2024-01-31'
UNION
SELECT producto, amount, 'Todos los períodos' AS periodo
FROM sales;

Resultado de la Consulta

El resultado de esta consulta es el siguiente:

productoamountperiodo
Producto A5000Enero 2024
Producto C7000Enero 2024
Producto A5000Todos los períodos
Producto B3000Todos los períodos
Producto C7000Todos los períodos
Producto D2000Todos los períodos

Como se puede ver, combinar datos basados en diferentes condiciones dentro de la misma tabla permite mostrar simultáneamente las ventas de un período específico y las ventas totales. Con UNION, es fácil lograr combinaciones de datos complejas basadas en condiciones específicas.

Mejores Prácticas al Usar UNION

A continuación, se describen algunas mejores prácticas para usar el operador UNION de manera efectiva. Seguir estas pautas puede mejorar el rendimiento de tus consultas y mantener su legibilidad.

Considera el Rendimiento

Dado que UNION elimina las filas duplicadas por defecto, se requiere procesamiento adicional, lo que puede afectar el rendimiento. Si no necesitas eliminar duplicados, usa UNION ALL para mejorar el rendimiento.

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

Verifica la Coherencia de los Tipos de Datos

Al usar UNION, es necesario que el número de columnas y los tipos de datos coincidan en cada consulta SELECT. Si intentas combinar tipos de datos diferentes, se producirá un error. Asegúrate de que los tipos de datos sean coherentes antes de ejecutar la consulta.

Selecciona Solo las Columnas Necesarias

Para mejorar el rendimiento y la legibilidad de la consulta, selecciona solo las columnas necesarias. Incluir columnas innecesarias puede complicar el conjunto de resultados y aumentar el tiempo de procesamiento.

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

Usa Índices Apropiados

Para optimizar el rendimiento de las consultas UNION, es importante configurar índices apropiados. El uso de índices permite que la base de datos procese las consultas combinadas de manera más eficiente.

Considera el Orden de las Consultas

En las consultas UNION, coloca primero la consulta que puede filtrar más datos de manera más eficiente para mejorar el rendimiento general. Filtrar la mayor cantidad de datos posible en la primera consulta puede reducir la carga de las consultas posteriores.

Al seguir estas mejores prácticas, puedes mejorar el rendimiento y la legibilidad de las consultas que utilizan el operador UNION.

Conclusión

El operador UNION es una herramienta poderosa para combinar los resultados de múltiples consultas SELECT en un solo conjunto de resultados. Al comprender las diferencias entre UNION y UNION ALL, y usar cada uno en el contexto adecuado, puedes integrar datos de manera eficiente.

En este artículo, hemos explicado el uso básico, proporcionado ejemplos prácticos y discutido las mejores prácticas para mejorar el rendimiento y la legibilidad de tus consultas. Aprovecha este conocimiento para optimizar tus consultas de bases de datos y facilitar análisis de datos complejos.

Utiliza UNION de manera efectiva para resolver desafíos de integración de datos y lograr operaciones de bases de datos más poderosas.

Índice