php - 应用 GROUP BY ID 时 SUM 添加不正确

标签 php mysql sql

我需要帮助来查找我的代码中关于逻辑错误的问题,我无法弄清楚为什么会发生这种情况,下面是我的代码:

$consultants = mysqli_query($con,"SELECT a.ID, a.USER_ID, a.TASK_ID, SUM(a.MON_BILL+a.TUE_BILL+a.WED_BILL+a.THU_BILL+a.FRI_BILL) AS conhours, a.DELETE_WEEK, b.ID, b.NAME, b.LAST_NAME, c.REF, SUM(c.EXPENSE_COST) AS consultantexpenses, c.DELETE_WEEK FROM b_report_week a INNER JOIN b_user b ON a.USER_ID = b.ID INNER JOIN b_report_expense2 c ON a.ID = c.REF WHERE a.DELETE_WEEK = 0 AND c.DELETE_WEEK = 0 GROUP BY a.USER_ID");
while($row = mysqli_fetch_array($consultants))
{
$conFN = $row['NAME'];
$conLN = $row['LAST_NAME'];
$totalConHours = $row['conhours'];
$totalConExpenses = $row['consultantexpenses'];

print "<tr><td>".$conFN." ".$conLN."</td><td>".$totalConHours."</td><td>".$totalConExpenses."</td>";

}

未正确添加的部分是这部分:

SUM(a.MON_BILL+a.TUE_BILL+a.WED_BILL+a.THU_BILL+a.FRI_BILL) AS conhours

基本上有五列,每列都有值并且有多行。这些行中也有 USER_ID,因此我想添加这些列中 USER_ID 相同的所有值。我的语句末尾已将 GROUP BY 设置为 a.USER_ID,这是正确的。

奇怪的是,有些数字是正确的,而有些则不正确,这确实令人困惑。我从数据库中获取了电子表格来添加正确的数字,这就是我知道有些是正确的、有些是错误的方式。

感谢任何帮助。

示例:

USER_ID   |   MON_BILL  |  TUE BILL  |  WED_BILL  |  THU_BILL  |  FRI_BILL
24        |   8         |  8         |  8         |  8         |  8
24        |   8         |  8         |  8         |  8         |  8
24        |   8         |  8         |  8         |  8         |  8
20        |   8         |  8         |  8         |  8         |  8  
20        |   8         |  8         |  8         |  8         |  8    

因此 USER_ID 24 总小时数应等于:120,而 USER_ID 20 = 80。它并不是这样相加的。

最佳答案

我认为你可能需要使用类似的东西:

SUM(a.MON_BILL)+SUM(a.TUE_BILL)+SUM(a.WED_BILL)+SUM(a.THU_BILL)+SUM(a.FRI_BILL) AS conhours

关于php - 应用 GROUP BY ID 时 SUM 添加不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21451999/

相关文章:

带有 IN 子句的 Mysql 查询和每个项目的限制

sql - 如何使用 hstore 进行 IN 查询?

java - 异常 java.sql.SQLException : Parameter index out of range (1 > number of parameters, 为 0)

mysql - SQL 查询从特定列中共享相同值的行中提取字段值,并将这些值组合成一行

php - password_verify 和 doveadm pw -t 如何在不加盐的情况下验证密码

php - PDO MySQL : Insert multiple rows in one query

适用于所有语言的 PHP slug 函数

php - 查询 PHP 信号量而不阻塞?

mysql - 无法使用 INSERT 和检索 SQL 条目?

mysql - 无法设置与 MySQL 工作台的连接