php - SUM 与 MYSQL 中的 JOIN 表给出错误的结果

标签 php mysql join

也许有人真的可以在这里帮助我。我需要一些指导。为什么当我尝试在 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,这是因为它只占用一天的行驶时间

enter image description here

最佳答案

尝试以下操作:

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/

相关文章:

PHP 分页 - 无法检测页面

mysql - 如果MySQL中未满足 "where",如何返回具有不同值的行

PHP上传文件,保存文件url到MySQL

php - MySQL 中的疾病-症状关系

php - 存储临时数据的更好方法是什么 [Memcache 或 MySQL]

php - 间隔 30 分钟的循环时间字符串

java - 使用netbeans中的JTable通过鼠标单击事件更新mySQL数据库中的数据

ruby-on-rails - Rails 查找所有关联 ID 匹配的记录

mysql - 如何在 join 中使用 datediff 函数

php - 代码点火器错误: Trying to get property of non-object when querying a database