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).
Use unión. Aquí hay una explicación
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