Mysql 选择总和小于值的位置

Mysql 选择总和小于值的位置,mysql,join,sum,Mysql,Join,Sum,我正在开发一个PHP/MySQL时间表系统,我要创建的报告将选择两个日期之间工作时间少于所需时间的所有员工。 员工的时间存储在小时和分钟(INT)中,但我只关心小时 employee表如下所示: ID | Name 1 | George 2 | Fred 时间表\u条目表: ID | employeeID | hour | date 1 | 1 | 2 | 2013-07-25 2 | 2 | 4 | 2013-07-25 3 | 1

我正在开发一个PHP/MySQL时间表系统,我要创建的报告将选择两个日期之间工作时间少于所需时间的所有员工。 员工的时间存储在小时和分钟(INT)中,但我只关心小时

employee表如下所示:

ID | Name
1  | George
2  | Fred
时间表\u条目表:

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 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
我试过:

SELECT employeeid,
       employeename
FROM   employee
       JOIN timesheet_entry tse
         ON tse.tse_employeeid = employeeid
            AND Sum(tse.hour) < $hrslimit  
选择employeeid,
雇员姓名
来自员工
加入时间表\u条目
关于tse.tse_employeeid=employeeid
和总和(谢时)<$hrslimit
我还不担心日期


令人困惑的是,我们正在连接两个表。也许我应该选择hours并将SUM子句放在WHERE的末尾?

您需要对数据进行分组,然后将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
选择employee.id,
雇员姓名,
日期,
总和(`hour`)
从时间表\u条目
在时间表上加入员工\u条目。employeeID=employee.ID
按时间表分组\u条目。员工ID,日期

把sum(`hour`)
sum(hour)作为sum\u hour
然后
有sum_hour@jaczes好啊我认为SQL optimizer将使性能保持不变。@valex谢谢,并感谢您的快速响应。我的示例不是最好的,都是在同一天完成的,但是我现在添加了GROUPBY date BEVERY子句来完成我的解决方案。谢谢,如果我可以的话,阿加尼会吻你的。谢谢