Karena orang tua mungkin memiliki baris anak di beberapa tabel tersebut, Anda harus menggunakan LEFT OUTER JOIN.
LEFT OUTER JOIN menggabungkan dua tabel yang mengembalikan semua baris tabel LEFT, dalam hal ini A dan semua kecocokan dari tabel lainnya. Ketika tidak ada kecocokan itu akan mengembalikan NULL di kolom yang sesuai dari tabel yang tidak ada kecocokan.
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
EDIT
Saya telah menambahkan cara untuk menambahkan subanak. Saya telah bermaksud mereka lebih hanya untuk membuat mereka jelas dalam representasi visual. Tapi hati-hati...jika ini menyebabkan subanak memiliki subanak lain dll, mungkin struktur Anda tidak optimal.