TOP

Lección SQL 12. Consultas combinadas (UNION)

La mayoría de las consultas SQL utilizan una única declaración que devuelve datos de una o más tablas. SQL también le permite ejecutar varias consultas independientes al mismo tiempo y mostrar el resultado como un único conjunto de datos. Estas consultas combinadas suelen denominarse combinaciones o consultas compuestas.


1. Usando el operador UNION

Las consultas SQL se combinan utilizando el operador UNION. Para hacer esto, debe especificar cada solicitud SELECT y colocar la palabra clave UNION entre ellas. No hay límite para la cantidad de usos del operador UNION en una consulta general. En la sección anterior notamos que MS Access no tiene la capacidad de crear una unión externa completa, ahora veremos cómo esto se puede lograr a través del operador UNION.

Run SQLSELECT *
FROM Sumproduct 
LEFT JOIN Sellers2 
ON Sumproduct.City = Sellers2.City
UNION
SELECT * 
FROM Sumproduct 
RIGHT JOIN Sellers2 
ON Sumproduct.City = Sellers2.City

Vemos que la consulta muestra todas las columnas de la primera tabla y de la segunda, independientemente de si todos los registros tienen contrapartes en otra tabla.

También vale la pena señalar que en muchos casos, en lugar de UNION, podemos usar la cláusula WHERE con muchas condiciones y obtener un resultado similar. Sin embargo, a través de UNION, los registros parecen más concisos y claros.

También es necesario seguir ciertas reglas al escribir consultas combinadas:

  • la solicitud UNION debe incluir dos o más operadores SELECT separados por la palabra clave UNION (es decir, si se utilizan cuatro operadores SELECT en la solicitud, entonces debe haber tres palabras clave UNION);
  • cada consulta en el operador UNION debe tener las mismas columnas, expresiones o funciones estadísticas, que, además, deben enumerarse en el mismo orden;
  • Los tipos de datos de columna deben ser compatibles. No necesariamente tienen que ser del mismo tipo, pero deben tener un tipo similar para que el DBMS pueda convertirlos sin ambigüedades (por ejemplo, pueden ser diferentes tipos de datos numéricos o diferentes tipos de fechas).
  • 2. Incluir o excluir líneas repetidas

    Una consulta con UNION elimina automáticamente todas las filas duplicadas del conjunto de resultados de la consulta (en otras palabras, se comporta como una cláusula WHERE con múltiples condiciones en una sola declaración SELECT). Este es el comportamiento predeterminado del operador UNION, pero podemos cambiarlo si queremos. Para ello deberíamos utilizar el operador UNION ALL en lugar de UNION.

    3. Ordenar los resultados de consultas combinadas

    Los resultados de la declaración SELECT se ordenan utilizando la declaración ORDER BY. Al combinar consultas usando UNION, solo se puede usar una cláusula ORDER BY y debe colocarse en la última declaración SELECT. De hecho, en la práctica, no tiene mucho sentido clasificar parte de los resultados en un orden y la otra parte en otro. Por lo tanto, no se permiten oraciones múltiples ORDER BY.