親テーブルがありますA
。
、、、、A
などの
子テーブルがほとんどありません。子テーブルは相互にリンクされていません。にのみリンクされています。
すべての子テーブルで外部キーとして使用されるキーがあります。B
C
D
E
F
G
A
A
Id
これで単一のビューを作成できるように、これらのテーブルを結合する最良の方法は何ですか?
親がこれらのテーブルの一部に子行を持つ場合があるため、LEFT OUTER JOIN を使用する必要があります。
LEFT OUTER JOIN は 2 つのテーブルを結合し、LEFT テーブルのすべての行 (この場合は A と他のテーブルからのすべての一致) を返します。一致がない場合、一致がなかったテーブルの対応する列に NULL が返されます。
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
編集
サブチャイルドを追加する方法を追加しました。私はそれらを視覚的な表現で明らかにすることだけを意図しています。ただし、注意してください...これによりサブチャイルドに他のサブチャイルドが含まれる場合は、構造が最適ではない可能性があります。
select <wanted columns>
from a
left join b
on a.id = b.a_id
left join c
on a.id = c.a_id
left join d
on a.id = d.a_id