1

親テーブルがありますA。 、、、、Aなどの 子テーブルがほとんどありません。子テーブルは相互にリンクされていません。にのみリンクされています。 すべての子テーブルで外部キーとして使用されるキーがあります。BCDEFGAAId

これで単一のビューを作成できるように、これらのテーブルを結合する最良の方法は何ですか?

4

2 に答える 2

5

親がこれらのテーブルの一部に子行を持つ場合があるため、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

編集

サブチャイルドを追加する方法を追加しました。私はそれらを視覚的な表現で明らかにすることだけを意図しています。ただし、注意してください...これによりサブチャ​​イルドに他のサブチャイルドが含まれる場合は、構造が最適ではない可能性があります。

于 2013-08-08T12:41:18.423 に答える
2
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
于 2013-08-08T12:41:00.120 に答える