左连接没有结果

时间:2013-03-26 15:44:04

标签: sql openedge

我遇到了一个问题,当我写这样的查询时:

SELECT a.v, b.w, c.x, d.y, e.z 
FROM a
JOIN b
on a.id = b.id
LEFT JOIN c
on a.id = c.id
LEFT JOIN d
on b.code=d.code
JOIN e
on a.n = e.n
WHERE
a.zone = 10
WITH (nolock)

我得到了几百个结果,但当我将其修改为:

SELECT a.v, b.w, c.x, d.y, e.z 
FROM a
JOIN b
on a.id = b.id
LEFT JOIN c
on a.id = c.id AND c.n = 0
LEFT JOIN d
on b.code=d.code AND d.n = 0
JOIN e
on a.n = e.n
WHERE
a.zone = 10
WITH (nolock)

我得到零结果。

从我对SQL和左连接的理解,我觉得用第一个查询得到任何结果意味着我绝对应该得到第二个的至少一个结果,如果只有一个c和d的字段为空。 PROGRESS是否以不寻常的方式实现外连接?

1 个答案:

答案 0 :(得分:0)

您可能想知道c.nd.n值是什么。尝试这样的事情来弄清楚你的出发点。

SELECT c.n, d.n, count(*)
FROM a
JOIN b
on a.id = b.id
LEFT JOIN c
on a.id = c.id
LEFT JOIN d
on b.code=d.code
JOIN e
on a.n = e.n
WHERE
a.zone = 10
group by c.n, d.n

然后您可以根据结果调整查询