combinar filas de tabla usando UNION
en esta lección vamos a hablar sobre la cláusula UNION. Puede usar la cláusula UNION para combinar filas de tabla de dos consultas diferentes en un solo resultado. A diferencia de una unión, que combina columnas de diferentes tablas, una unión combina filas de diferentes tablas. Aquí hay una ilustración de cómo se ve una unión
Unions
todos los ejemplos de esta lección se basan en Microsoft SQL Server Management Studio y la base de datos AdventureWorks2012., Puede comenzar a usar estas herramientas gratuitas utilizando mi guía Introducción a SQL Server.
En SQL esta declaración parece
SELECT columnlistFROM table1UNIONSELECT columnlistFROM table2
En el fin de la unión de dos tablas hay un par de requisitos:
- El número de columnas debe ser el mismo para los dos instrucciones select.
- Las columnas, en orden, deben ser del mismo tipo de datos.
cuando se combinan filas se eliminan las filas duplicadas. Si desea mantener todas las filas de los resultados de la instrucción select, use la palabra clave ALL.,
ejemplos
Union two tables
supongamos que se le pide que proporcione una lista de todas las categorías y subcategorías de productos AdventureWorks2012. Para hacer esto, puede escribir dos consultas separadas y proporcionar dos resultados separados, como dos hojas de cálculo, o puede usar la cláusula UNION para entregar un resultado combinado:
SELECT C.NameFROM Production.ProductCategory AS CUNION ALLSELECT S.NameFROM Production.ProductSubcategory AS S
de esto se obtiene una lista combinada de nombres, pero supongamos que desea saber qué nombre son categorías versus subcategorías., Para hacer esto, puede agregar una nueva columna indicando el tipo de categoría:
SELECT 'category', C.NameFROM Production.ProductCategory AS CUNION ALLSELECT 'subcategory', S.NameFROM Production.ProductSubcategory AS S
Union versus Union All
la diferencia entre UNION y UNION ALL es que con UNION devuelve un conjunto único de filas del resultado de union; mientras que UNION ALL devuelve cada fila.
Ejemplo:
SELECT person.Address.CityFROM person.Address
Devuelve 19614 filas.
SELECT person.Address.CityFROM person.AddressUNIONSELECT person.Address.CityFROM person.Address
devuelve 575 filas, que es el número de nombres de ciudades distintas dentro de la tabla. Ejecutar UNION All devuelve el conjunto completo de nombres de ciudades dos veces:
SELECT person.Address.CityFROM person.AddressUNION ALLSELECT person.Address.CityFROM person.Address
devuelve 39228 filas.,
como puedes ver, hay una gran diferencia con el uso del calificador ALL. Cuando no se utiliza, los resultados son valores distintos. Los duplicados no solo se eliminan entre filas de cada resultado, sino también desde dentro.
Union three tables
supongamos que la administración quiere una lista combinada de personas, proveedores y nombres de tiendas identificados por fuente.
para hacer esto creamos tres consultas separadas y luego usamos la cláusula union para juntarlas. Luego ordenaremos la lista.,
a primera vista puede pensar que la cláusula ORDER BY solo se aplicaría a la última instrucción select, pero de hecho se aplica a todos los resultados devueltos por la Unión. El motor de base de datos primero procesa todas las declaraciones de la Unión y luego el pedido por.
Si tiene dudas sobre el orden de procesamiento, puede usar paréntesis «() » para controlar el orden de la evaluación al igual que con las expresiones. Así es como se vería la declaración, en general, entre paréntesis: