Php 应用“按ID分组”时,总和添加不正确

Php 应用“按ID分组”时,总和添加不正确,php,mysql,sql,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_CO

我需要帮助找出我的代码中关于逻辑错误的错误,我无法找出它发生的原因,下面是我的代码:

$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>";

}
基本上有五列,每列中都有值,并且有多行。这些行中还包含USER\u ID,因此我想在这些列中添加USER\u ID相同的所有值。将语句末尾的GROUP BY设置为a.USER\u 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    

因此,用户ID 24小时总数应等于:120,而用户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

请提供正确和不正确结果的示例数据和示例查询。您不能在mysql sum中单独求和,然后在php或指南中获取所有总计和总和http://www.w3schools.com/sql/sql_func_sum.aspAre 您确定这些列中没有空值吗?NULL+1=NULL您可以查询SELECT*FROM b_report_expense2其中REF在SELECT ID FROM b_report_week中,其中USER_ID='24'它应该返回三行,否则它缺少一些内容!您在USER_ID级别进行分组,但在较低级别选择了详细信息,而没有将它们包含在GROUP BY子句中,因此最终返回了多行。
SUM(a.MON_BILL)+SUM(a.TUE_BILL)+SUM(a.WED_BILL)+SUM(a.THU_BILL)+SUM(a.FRI_BILL) AS conhours