SQL Server - 具有依赖于第一次或第二次连接的多个连接的查询

时间:2013-09-16 20:18:27

标签: sql sql-server tsql join coalesce

我有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之间的连接进行匹配时,它只返回第四个表中的值。

反正有没有实现这个目标? 提前感谢您的建议

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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