SQL LEFT JOIN WHERE没有显示正确的结果

时间:2014-09-19 12:52:56

标签: sql join group-by where

所以我得到了这个问题:

数据结构: 用户 id --- inlog ---- name ---- more stuff

llntoets id --- code ---- inlog ----更多东西

oefeningen ID --- --- speler状态---- morestuff

(inlog和speler总是与用户的值相同)

SELECT
// Some other stuff working
SUM(o.status) AS oefn
FROM    users AS u
LEFT JOIN     llntoets AS l
ON (u.inlog = l.inlog)
LEFT JOIN     oefeningen AS o   
ON (u.inlog = o.speler) AND o.status = 'afgewerkt'
WHERE
code = '$code'
GROUP BY l.inlog
ORDER BY klas ASC, klasnr ASC

除了oefn变量之外,一切都运行良好。它显示一个数字,有时它显示正确的值,有时它显示的值远远高于应有的值。有人告诉我这可能是因为GROUP BY。有人可以帮我吗?

它应该计算来自oefeningen表的总记录,其中status ='afgewerkt'以及speler是来自用户的inlog。谢谢,如果你有其他问题,请试着解释一下。

1 个答案:

答案 0 :(得分:0)

查询中的SUM(o.status)不应计算表oefeningen的总记录数。
该总和是满足您的标准的所有连接行的值的总和,可以是更高的数字 另请注意,即使您在查询中写了o.status = 'afgewerkt',也应用过滤器JOIN即可执行LEFT JOIN