Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何根据此表的结果进行汇总/分组_Php_Mysql_Select - Fatal编程技术网

Php 如何根据此表的结果进行汇总/分组

Php 如何根据此表的结果进行汇总/分组,php,mysql,select,Php,Mysql,Select,我有一个小时表,它看起来像: 我只想对本周花在结果上的小时数进行汇总,并按创建的人对结果进行分组。我有一个查询,它返回正确的数据,只显示本周的结果: 但是,当我将总和(花费的小时数)作为总小时数和按员工分组时,如下面的示例所示,我得到的结果为0 我假设它不起作用,因为我语句的Having部分没有返回单独的日期行,所以它会中断 我觉得我这样做很难。我是否应该尝试对第一个查询的结果运行第二个求和查询,而不是将其全部合并到一个查询中(我希望是干净的)。或者我应该使用子查询筛选出不是本周的日期,然

我有一个小时表,它看起来像:

我只想对本周花在结果上的小时数进行汇总,并按创建的人对结果进行分组。我有一个查询,它返回正确的数据,只显示本周的结果:

但是,当我将总和(
花费的小时数
)作为总小时数和按员工分组时,如下面的示例所示,我得到的结果为0

我假设它不起作用,因为我语句的Having部分没有返回单独的日期行,所以它会中断


我觉得我这样做很难。我是否应该尝试对第一个查询的结果运行第二个求和查询,而不是将其全部合并到一个查询中(我希望是干净的)。或者我应该使用子查询筛选出不是本周的日期,然后将总数分组,如果是这样,我如何才能做到这一点?

我得到了我所期望的:

选择staff.first\u name、staff.last\u name、sum(
hours\u speed
) 从几个小时开始 LEFT JOIN staff ON hours.created_by=staff.staff_id 其中,yearweek(
date_输入的
,1)=(yearweek(curdate(),1)-1)

按创建人分组

尝试按小时分组。按创建人分组,并注释您的声明。这应该确保您的加入是正确的,并查看have是否正在过滤结果。
SELECT staff_id, first_name,  last_name, date_entered, `hours_spent` as total_hours FROM hours LEFT JOIN staff ON hours.created_by = staff.staff_id where yearweek(`date_entered`) = yearweek(curdate());
SELECT staff_id, date_entered, first_name, last_name, SUM(`hours_spent`) as total_hours FROM hours LEFT JOIN staff ON hours.created_by = staff.staff_id group by staff_id having yearweek(`date_entered`) = yearweek(curdate());