也许有人真的可以在这里帮助我。我需要一些指导。为什么当我尝试在 JOIN 表的列中执行 SUM 时,主表的 SUM 返回错误结果?假设如果表 A 的总和为 6,但有 3 条记录与表 B 连接,则结果从 6 变为 18。我似乎无法理解。谢谢
SELECT SUM(tm_hours) AS total_hours,
SUM(drive_time) AS drive_time,
STR_TO_DATE(CONCAT(YEAR(tm_date),WEEK(tm_date),' Monday'), '%X%V %W') AS weeks
FROM `bhds_timecard`
LEFT JOIN bhds_mileage
ON bhds_timecard.case_no = bhds_mileage.case_no
WHERE bhds_timecard.ds_id = '3' AND tm_date BETWEEN '2016-03-16' AND '2016-03-31'
GROUP BY CONCAT(YEAR(tm_date), WEEK(tm_date))
输出应该看起来像我修改了查询,但我仍然得到错误的驾驶时间。第一周的行驶时间应为 55,这是因为它只占用一天的行驶时间
最佳答案
尝试以下操作:
SELECT SUM(hours) as total_hours, SUM(drive_time), weeks
FROM ( SELECT tm_hours AS hours,
SUM(drive_time) AS drive_time,
STR_TO_DATE(CONCAT(YEAR(tm_date),
WEEK(tm_date),' Monday'), '%X%V %W') AS weeks,
bhds_timecard.case_no
FROM `bhds_timecard`
LEFT JOIN bhds_mileage
ON bhds_timecard.case_no = bhds_mileage.case_no
WHERE bhds_timecard.ds_id = '3'
AND tm_date BETWEEN '2016-03-16' AND '2016-03-31'
GROUP BY weeks, bhds_timecard.case_no
) as innersums
GROUP by weeks;
关于php - SUM 与 MYSQL 中的 JOIN 表给出错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36272599/