una todas tablas las example especificacion ejemplos condicional columna calculada buscar sql database union

sql - todas - Ver en mĂșltiples tablas que contienen las mismas columnas



sql server columna calculada condicional (7)

Tengo cuatro tablas que contienen exactamente las mismas columnas, y quiero crear una vista sobre las cuatro para poder consultarlas juntas.

es posible?

(por tediosas razones, no puedo / no estoy autorizado a combinarlos, lo cual lo haría irrelevante).



En lugar de UNION, use UNION ALL, a menos que desee específicamente que se excluyan las filas duplicadas. UNION en sí mismo tarda más tiempo en ejecutarse (debido a la clase que lo hace para encontrar duplicados) y elimina las filas duplicadas.


Es difícil determinar a partir de su consulta si espera que los datos se devuelvan basándose en un UNION o en una vista que contenga las columnas discretamente. Esto obviamente tiene un efecto.

Considere la siguiente muestra:

TableA ID Name RelatedID 1 John 2 2 Paul 1 TableB ID Name RelatedID 1 Ringo 1 2 George 1 TableC ID Name RelatedID 1 Bob 1 TableD ID Name RelatedID 1 Kate NULL

Ahora, ejecute la siguiente consulta en contra de esto:

SELECT ID, Nombre FROM TableA UNION ALL SELECT ID, Nombre FROM TableB UNION ALL SELECT ID, Nombre FROM TableC UNION ALL SELECT ID, Nombre FROM TableD

Esto da como resultado el siguiente resultado:

1 John 2 Paul 1 Ringo 2 George 1 Bob 1 Kate

¿Es esto lo que buscas? Si es así, usa una consulta UNION.

Ahora, si el efecto que buscas es tener una vista discreta de los datos relacionados, es posible que debas hacer algo como esto:

SELECT A.ID MasterID, A.Name MasterName, B.ID BandID, B.Name BandName, C.ID BlackadderID, C.Name BlackadderName D.ID BlackadderRealID, D.Name BlackadderRealName FROM TableA A INNER JOIN TableB B ON A.RelatedID = B.ID INNER JOIN TableC C ON B.RelatedID = C.ID INNER JOIN TableD D ON C.RelatedID = D.ID

Esto dará como resultado la siguiente vista de los datos:

MasterID MasterName BandID BandName BlackAdderID BlackAdderName BlackadderRealID BlackadderRealName 1 John 2 George 1 Bob 1 Kate 2 Paul 1 Ringo 1 Bob 1 Kate


Puede valer la pena señalar que es posible que deba usar "union all" para conservar las filas únicas que pueden existir en más de una de las tablas. Una unión estándar eliminará duplicados.


Puedes unirlos (sugiero incluir algún indicador en cuanto a la tabla de cada registro):

select table1.column1, 1 as TableNumber from table1 union select table2.column1, 2 as TableNumber from table2 .. etc ..


Suponiendo que, además de tener los mismos nombres de columna, las columnas de la misma contienen los mismos datos, desea crear una vista que sea la unión de todas esas tablas.

Algo como lo siguiente debería funcionar, pero mi SQL está oxidado:

(CREATE VIEW view_name AS (SELECT * FROM table1 UNION SELECT * FROM table2 UNION SELECT * FROM table3));


Use la declaración del sindicato

select * from table1 union select * from table2 union select * from table3