我正在开发一个PHP / MySQL时间表系统,我想要创建的报告选择所有在两个日期之间工作时间少于所需时间的员工。 员工的时间以小时和分钟(INT)存储,但我只关心时间。
员工表格如下:
ID | Name
1 | George
2 | Fred
timesheet_entry表:
ID | employeeID | hour | date
1 | 1 | 2 | 2013-07-25
2 | 2 | 4 | 2013-07-25
3 | 1 | 3 | 2013-07-25
因此,如果我在2013-07-25选择工作时间少于5小时(PHP变量hrsLimit)的员工,则应返回2 Fred,因为George在该日期共工作了5个小时。 我有一个HTML表单,因此用户可以设置查询的变量。
我试过了:
SELECT employeeid,
employeename
FROM employee
JOIN timesheet_entry tse
ON tse.tse_employeeid = employeeid
AND Sum(tse.hour) < $hrslimit
我还没有担心约会。
令人困惑的是,我们正在加入两个表。也许我应该选择小时并将SUM子句放在WHERE的末尾?
答案 0 :(得分:2)
您需要对数据进行分组,然后将SUM条件放入查询的HAVING部分。
select employee.id,
employee.Name,
Date,
sum(`hour`)
from timesheet_entry
join employee on timesheet_entry.employeeID=employee.ID
group by timesheet_entry.employeeID,date
having sum(`hour`)<$hrslimit