web-dev-qa-db-ja.com

SQLで複数のLEFT JOINを使用する方法は?

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

これは機能しますか?

47
cute

はい、可能です。結合テーブルごとに1つのONが必要です。

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 で説明されています。あなたがこれの多くを書くつもりであるならば、それはたぶん役立つでしょう。

47
btilly

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

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>
27
Daniel DiPaolo

必要なSQLは次のようになります。

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

それが役に立てば幸い。

10

テーブルの順序に応じて、2つの選択肢があります

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
RichardTheKiwi