【发布时间】:2014-09-19 12:52:56
【问题描述】:
所以我得到了这个查询:
数据结构: 用户 id---inlog----name----更多的东西
llntoets id---code----inlog----更多的东西
欧芬根 id---speler---status----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 变量中的 1 件事之外,一切都运行良好。它显示一个数字,有时它显示正确的值,有时它显示的值远高于应有的值。有人告诉我这可能是因为 GROUP BY。有人可以帮我吗?
它应该计算来自表 oefeningen 的总记录,其中 status = 'afgewerkt' 并且 speler 是来自用户的 inlog。谢谢,如果您有其他问题,请尝试解释更多。
【问题讨论】:
-
您可能有一个出乎意料的 1:M 关系。在您的选择中包含 l.inlog,按它排序,然后删除 group by 语句。现在找到一个 SUM 比您预期高得多的 l.inlog 值,看看为什么您的选择中包含这些行。