SQL Server-具有依赖于第一个或第二个联接的多个联接的查询
我有一个4个表的查询。它需要通过将第一个表连接到第二个表或第三个表来从第四个表返回值,具体取决于第二个表上的连接是否返回匹配 以下是我在网上查找后尝试的内容:SQL Server-具有依赖于第一个或第二个联接的多个联接的查询,sql,sql-server,tsql,join,coalesce,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) 现在,当
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之间的连接进行匹配时,它只从第四个表返回一个值
有没有办法做到这一点?
提前感谢您的建议好吧,除了我认为的复制/粘贴错误(上一个连接条件缺少一部分)之外,您的查询应该可以工作:
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
好的,除了我认为是copye/paste上的一个错误(它缺少上一个连接条件的一部分)之外,您的查询应该可以工作:
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
看起来您的查询应该按原样工作(除了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
看起来您的查询应该按原样工作(除了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
嗯,睡眠不足和咖啡因会导致这种情况。为了这篇文章的目的,我简化了查询,甚至在这里看不到我的错误。。。谢谢大家指出这一点。好吧,睡眠不足和咖啡因会造成这种情况。为了这篇文章的目的,我简化了查询,甚至在这里看不到我的错误。。。谢谢大家指出这一点。