我有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之间的连接进行匹配时,它只返回第四个表中的值。
反正有没有实现这个目标? 提前感谢您的建议
答案 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