По вашему запросу трудно сказать, ожидаете ли вы, что данные будут возвращены на основе UNION или как представление, содержащее столбцы дискретно. Это, очевидно, имеет эффект.
Рассмотрим следующий пример:
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
Теперь выполните следующий запрос к этому:
ВЫБЕРИТЕ ИД, Имя ИЗ А таблицы
СОЮЗ ВСЕХ
ВЫБЕРИТЕ ID, Имя ИЗ СТОЛБА
СОЮЗ ВСЕХ
ВЫБЕРИТЕ ID, Имя ИЗ TableC
СОЮЗ ВСЕХ
ВЫБЕРИТЕ ID, Имя ИЗ TableD
Это приводит к следующему выводу:
1 John
2 Paul
1 Ringo
2 George
1 Bob
1 Kate
Это то, что вы ищете? Если это так, вы используете запрос UNION.
Теперь, если желаемый эффект заключается в том, чтобы иметь дискретное представление связанных данных, вам может потребоваться сделать что-то вроде этого:
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
Это приведет к следующему представлению данных:
MasterID MasterName BandID BandName BlackAdderID BlackAdderName BlackadderRealID BlackadderRealName
1 John 2 George 1 Bob 1 Kate
2 Paul 1 Ringo 1 Bob 1 Kate