Vzhledem k tomu, že rodič může mít v některých z těchto tabulek podřízený řádek, musíte použít LEFT OUTER JOIN.
LEFT OUTER JOIN spojuje dva stoly a vrací všechny řádky tabulky LEFT, v tomto případě A a všechny shody z ostatních stolů. Pokud není nalezena žádná shoda, vrátí hodnotu NULL v odpovídajících sloupcích tabulek, u kterých nedošlo k žádné shodě.
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
UPRAVIT
Přidal jsem způsob, jak přidat podřízené děti. Zamýšlel jsem je spíše proto, aby byly zřejmé ve vizuální reprezentaci. Ale pozor...pokud to vede k tomu, že podděti mají další podděti atd., možná vaše struktura není optimální.