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 el siguiente ejemplo:
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 esto:
SELECT ID, Nombre de la Tabla A UNION ALL SELECT ID, nombre TableB UNION ALL SELECT ID, Nombre FROM TableC UNION ALL SELECCIONE ID, Nombre FROM TableD
Resultado s en la siguiente salida:
1 John
2 Paul
1 Ringo
2 George
1 Bob
1 Kate
Esto es lo que buscas? Si es así, usa una consulta UNION.
Ahora, si el efecto deseado es tener una visión diferenciada de datos relacionados, puede que tenga que 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á lugar a 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
¿qué servidor de base de datos está utilizando? – ysth
No estoy seguro de su configuración exacta, pero si tiene 4 tablas duplicadas que desea consultar con una unión, una sola tabla con una columna de tipo puede tener más sentido. A menos que, por supuesto, el sistema ya exista o haya otros factores. –