所以我得到这个查询:SQL LEFT JOIN WHERE无法显示正确的结果
数据结构: 用户 ID --- inlog ---- ----名字更多的东西
llntoets ID ---代码---- ---- 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
一切运行良好,除了1件事情的OEFN变量。它显示了一个数字,有时它显示了正确的值,有时它显示的值比应该高得多。有人告诉我可能是因为GROUP BY。有人可以帮我吗?
它应该统计来自表oefeningen的总记录,其中状态='afgewerkt',以及speler是来自用户的内部记录。谢谢,如果您有其他问题,请尝试解释更多。
你可能有1:M的关系,你不期待。在你的选择中包含l.inlog,按顺序排序,然后按语句删除组。现在找到一个比您预期的SUM高得多的l.inlog值,并查看为什么您的选择中包含这些行。 – Carth 2014-09-19 12:57:00