2011-02-09 9 views
34

SQLクエリで複数の左結合を使用することはできますか? それでは解決しなかったら?複数の左ジョインを使用

LEFT JOIN 
     ab 
    ON 
     ab.sht = cd.sht 

このような質問をもう1つ追加しますか? これは動作しますか?

LEFT JOIN 
     ab AND aa 
    ON 
     ab.sht = cd.sht 
      AND 
        aa.sht = cc.sht 

Wilこの作品はありますか?

答えて

40

はい、可能です。各結合表に対してONを1つ必要とします。

LEFT JOIN ab 
    ON ab.sht = cd.sht 
LEFT JOIN aa 
    ON aa.sht = cd.sht 

ちなみに、私の個人用の複雑なSQLの書式の設定については、http://bentilly.blogspot.com/2011/02/sql-formatting-style.htmlを参照してください。これをたくさん書いているつもりなら、おそらく助けになるでしょう。

+0

に応じて、2つの選択肢がありますか? – cute

+0

小さなコードサンプルを追加しました。 – btilly

17

はい、しかし、構文は、あなたが持っているものと異なる

SELECT 
    <fields> 
FROM 
    <table1> 
    LEFT JOIN <table2> 
     ON <criteria for join> 
     AND <other criteria for join> 
    LEFT JOIN <table3> 
     ON <criteria for join> 
     AND <other criteria for join> 
+0

JOINにAND基準を提示してくれてありがとう。 WHERE句にいくつかの検索用語を間違って移動させて頭が壊れてしまった! – Santosh

8

必要なSQLは、いくつかのようになります: -

SELECT * FROM cd 
LEFT JOIN ab ON ab.sht = cd.sht 
LEFT JOIN aa ON aa.sht = cd.sht 
.... 

それがお役に立てば幸いです。

+1

LEFT JOINをこの形式で表示すると、実際には物事を視点に入れます。 –

0

あなたは、コード/クエリで説明することができますあなたは?あなたが何を意味するか、あなたのテーブルの順序

create table aa (sht int) 
create table cc (sht int) 
create table cd (sht int) 
create table ab (sht int) 

-- type 1  
select * from cd 
inner join cc on cd.sht = cc.sht 
LEFT JOIN ab ON ab.sht = cd.sht 
LEFT JOIN aa ON aa.sht = cc.sht 

-- type 2 
select * from cc 
inner join cc on cd.sht = cc.sht 
LEFT JOIN ab 
LEFT JOIN aa 
ON aa.sht = ab.sht 
ON ab.sht = cd.sht 
+0

が動作しない – cute

+0

@cute更新された回答を参照 – RichardTheKiwi

関連する問題