Quantcast
Channel: campusMVP.es
Viewing all articles
Browse latest Browse all 776

Combinar consultas iguales en SQL: los operadores UNION y UNION ALL

$
0
0

En el lenguaje de consulta de datos SQL estándar, el operador UNION sirve para combinar los resultados de dos consultas independientes, devolviendo como resultado conjunto todos los registros obtenidos por ambas.

Evidentemente, para poder realizar la unión ambas consultas deben devolver exactamente los mismos campos, tanto sus nombres como el tipo de dato. Lo que no es necesario es que se obtengan de la misma manera. Es decir, unos podrían ser campos directos obtenidos de una consulta a una tabla, y los de la segunda parte podrían ser campos calculados. Mientras tengan el mismo nombre y tipo no hay problema.

Así en el caso más sencillo, por ejemplo, si tenemos dos tablas de información con datos de ventas separados por divisiones, algo como esto (en dos tablas diferentes):

image

image

Podemos escribir una consulta como esta:

SELECT Comercial, Venta FROM VentasSoftwareUNION
SELECT Comercial, Venta FROM VentasConsultoria

Para obtener el resultado combinado de ambas tablas:

image

Aquí hay un detalle importante. Si nos fijamos en estos resultados veremos que Pepe, que está en ambas tablas con el mismo valor de ventas, solo aparece una vez. Y es que UNION evita que haya registros duplicados en el resultado final. O sea, elimina las filas duplicadas en las que todos los valores de los campos son iguales.

Si queremos obtener la mezcla total, incluso con duplicados, debemos usar UNION ALL:

SELECT Comercial, Venta FROM VentasSoftwareUNION ALL
SELECT Comercial, Venta FROM VentasConsultoria

que en este caso nos devuelve:

image

En este caso vemos como el comercial "Pepe" está dos veces.

Además de esta evidente, existe otra diferencia muy importante entre ambos métodos: UNION ALL ofrece mucho más rendimiento que UNION. El motivo es que al no tener que discriminar los registros repetidos el proceso es mucho más simple. En consultas habituales de pocos registros no lo vamos a notar, pero en grandes consultas con muchos posibles resultados sí.

Además, si estamos seguros de que los dos conjuntos de resultados que vamos a unir no tienen datos comunes (o no nos importa), es mejor recurrir siempre a UNION ALL por este motivo.


Viewing all articles
Browse latest Browse all 776

Trending Articles