に依存性を有するアウタージョインI 3つの表A、BおよびTMySQLの参加テーブルは複数のテーブル
を有するTは、それぞれ表AおよびBへの外部キーを保持しています。
今、私はTが空であっても(A、B、T)のすべての行を取得したいと思います。
SELECT * from
A
LEFT OUTER JOIN T t1 ON t1.A_ID = A.id,
B
LEFT OUTER JOIN T t2 ON t2.B_ID = B.id
WHERE A.B_ID = B.ID
今の問題は、私は次の内容を追加しますので、私はあまりにも多くの行を取得することです:
AND t1.id = t2.id
しかし、今、私は私を含む経て最初の場所で避けることを試みた全く行を取得しませんLEFT OUTER JOIN。
EDIT:私の質問は、外部キー依存関係が1つ以上のテーブル(この場合はA + B)に与えられた2つの左外部結合を必要とするテーブルT他の方法がありますか?単に二左参加、一部のユーザーは、それは外の範囲であるとして働くことができない提案のようにテーブルAに参照のうえ
は、また here
を説明しますが、括弧で両方のテーブルを囲むのであれば、それは動作します:
SELECT * from (A, B)
LEFT OUTER JOIN T t ON t.A_ID = A.id and t.B_ID = B.id
:
そして、AとBは関係が最後に次の行を追加している場合A.B_ID = B.IDの目的は何ですか?おそらくテーブル定義とサンプルデータを投稿できますか? –
あなたは次のようなものを試してみるとよいでしょう: http://stackoverflow.com/questions/4796872/full-outer-join-in-mysql –
あなた自身の健全性(そしてある程度は私たちのもの)のためにミックス '、' JOIN'表記になります。好ましくは 'JOIN'を使って試してみてください。また、 '(A LEFT JOIN T ON ???)INNER JOIN(B LEFT JOIN T ON?)ON 'のように、クエリの部分を' – MatBailie