所以我得到了这个问题:
数据结构: 用户 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。谢谢,如果你有其他问题,请试着解释一下。
答案 0 :(得分:0)
查询中的SUM(o.status)
不应计算表oefeningen
的总记录数。
该总和是满足您的标准的所有连接行的值的总和,可以是更高的数字
另请注意,即使您在查询中写了o.status = 'afgewerkt'
,也应用过滤器JOIN
即可执行LEFT JOIN
。