Il est difficile de dire à partir de votre requête si vous attendez que les données soient renvoyées en fonction d'UNION, ou en tant que vue contenant les colonnes de façon discrète. Cela a évidemment un effet.
Prenons l'exemple suivant:
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
Maintenant, exécutez la requête suivante sur ceci:
ID SELECT, Nom DE TableA UNION ALL ID SELECT, Nom DE TableB UNION ALL SELECT ID, Nom FROM TableC UNION ALL SELECT ID, Nom FROM TableD
Ce résultat s dans la sortie suivante:
1 John
2 Paul
1 Ringo
2 George
1 Bob
1 Kate
Est-ce ce que vous cherchez? Si c'est le cas, vous utilisez une requête UNION.
Maintenant, si l'effet que vous êtes après est d'avoir une vue discrète des données connexes, vous devrez peut-être faire quelque chose comme ceci:
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
Cela se traduira par la vue suivante des données:
MasterID MasterName BandID BandName BlackAdderID BlackAdderName BlackadderRealID BlackadderRealName
1 John 2 George 1 Bob 1 Kate
2 Paul 1 Ringo 1 Bob 1 Kate
Quel serveur de base de données utilisez-vous? – ysth
Je ne suis pas sûr de votre configuration exacte, mais si vous avez 4 tables en double que vous voulez interroger avec une union, une seule table avec une colonne de type pourrait avoir plus de sens. Sauf si le système existe déjà ou s'il existe d'autres facteurs. –