テーブル構造の説明方法がわからないので、これが理にかなっていることを願っています...
AがBと1対多の関係を持ち、Cと1対多の関係を持つように、階層関係に3つのテーブルがあります。秘訣は、BとCの外部キーをnullにすることができることです(つまり、親はありません)定義されています)。また、A、B、または C と (直接) 関係のない D と E もあります。
最後に、C、D、および E との多対 1 の関係を持つ結合テーブルである F があります。そのフィールド (他のテーブルへの FK) はいずれも null 許容ではありません。
すべてのテーブルを 1 つの結果セットに結合する SQL ステートメントを作成したいと考えています。Bに子があり、BとCに似ているかどうかに関係なく、Aのすべてを返す必要があるため、外部結合を使用する必要があることはわかっています。
質問 1: ANSI の外部結合構文 (以前は Oracle の "(+)" しか使用したことがありません) を見てきましたが、3 つ以上のテーブルを外部結合する例が見つかりません。誰かが例を提供/指摘できますか?
質問 2:結合テーブル F に基づいて、テーブル D と E のレコードを含めることは可能ですか? もしそうなら、これは外部結合で行われますか?
ありがとう!
編集
もちろん、これを投稿した直後に、質問 1 に答える例を見つけました。ただし、質問 2 にはまだ困惑しています。
例:
SELECT A.a,
B.b,
C.c
FROM A
FULL OUTER JOIN B ON B.a = A.a
FULL OUTER JOIN C ON C.b = B.b