0

4 つのテーブルを含むクエリがあります。最初のテーブルを 2 番目または 3 番目のテーブルに結合することによって、4 番目のテーブルから値を返す必要があります。

これをオンラインで調べた後、私が試したのは次のとおりです。

SELECT t1.field1, t4.field1   
FROM t1
LEFT JOIN t2 ON t1.field1 = t2.field1
LEFT JOIN t3 ON t1.field1 = t3.field1   
LEFT JOIN t4 ON COALESCE(t2.field1, t3.field1)

現在、t1 と t2 の間の結合から一致が得られた場合にのみ、4 番目のテーブルから値が返されます。

これを達成する方法はありますか?ご提案いただきありがとうございます

4

2 に答える 2

2

さて、コピー/貼り付けのエラーであると思われるもの(最後の結合条件の一部が欠落している)を除けば、クエリは機能するはずです:

SELECT t1.field1, t4.field1
FROM t1
LEFT JOIN t2 
    ON t1.field1 = t2.field1
LEFT JOIN t3 
    ON t1.field1 = t3.field1
LEFT JOIN t4 
    ON COALESCE(t2.field1, t3.field1) = t4.field1
于 2013-09-16T20:21:49.710 に答える
1

あなたのクエリはそのまま動作するはずです(Lamakが言及したように式が欠落していることを除けば)、代わりに:

SELECT sub.field1, t4.field1
FROM (SELECT t1.field1, COALESCE(t2.field1, t3.field1) as field2
      FROM t1
      LEFT JOIN t2 
         ON t1.field1 = t2.field1
      LEFT JOIN t3 
         ON t1.field1 = t3.field1
     )sub
LEFT JOIN t4
  ON sub.field2 = t4.field1
于 2013-09-16T20:32:40.533 に答える