Da ein übergeordnetes Element in einigen dieser Tabellen möglicherweise eine untergeordnete Zeile hat, müssen Sie LEFT OUTER JOIN verwenden.
LEFT OUTER JOIN verbindet zwei Tabellen und gibt alle Zeilen der LEFT-Tabelle zurück, in diesem Fall A und alle Übereinstimmungen aus den anderen Tabellen. Wenn es keine Übereinstimmung gibt, wird NULL in den entsprechenden Spalten der Tabellen zurückgegeben, dass es keine Übereinstimmung gab.
SELECT *
FROM A
LEFT OUTER JOIN B
ON A.Id = B.ParentID
LEFT OUTER JOIN C
ON A.Id = C.ParentID
LEFT OUTER JOIN P
ON C.Id = P.ParentID
LEFT OUTER JOIN Q
ON C.Id = Q.ParentID
LEFT OUTER JOIN D
ON A.Id = D.ParentID
LEFT OUTER JOIN E
ON A.Id = E.ParentID
LEFT OUTER JOIN F
ON A.Id = F.ParentID
LEFT OUTER JOIN X
ON F.Id = X.ParentID
LEFT OUTER JOIN Y
ON F.Id = Y.ParentID
LEFT OUTER JOIN G
ON A.Id = G.ParentID
BEARBEITEN
Ich habe eine Möglichkeit hinzugefügt, untergeordnete Elemente hinzuzufügen. Ich habe sie eher beabsichtigt, um sie in einer visuellen Darstellung deutlich zu machen. Aber Vorsicht...wenn das dazu führt, dass Unterkinder andere Unterkinder haben usw., ist Ihre Struktur vielleicht nicht optimal.