我有一个查询,我计算每个用户的工作时间。
$sql = "
SELECT actief
, userid
, DATE_FORMAT(datum, '%x - %V')
, username
, min_urenperweek
, SEC_TO_TIME(SUM(TIME_TO_SEC(tijd_tot) - TIME_TO_SEC(tijd_van))) timediff
FROM " . TBL_URENREGISTRATIE . " ur
JOIN " . TBL_CMS_USERS . " us
ON us.userid = ur.userid
GROUP
BY YEARWEEK(datum)
, userid
ORDER
BY us.username ASC
" ;
我想要的是:如果min_urenperweek
让它说40小时而timediff
超过40小时,我不希望它显示它是否小于40然后我想显示它
我尝试了Where min_urenperweek <= timediff
,但它不起作用
答案 0 :(得分:1)
GROUP BY
子句中的字段应与SELECT
子句中不属于聚合函数的字段相同。
您无法在SELECT
子句中的WHERE
子句中指定别名。
如果要过滤聚合的结果,则不能在WHERE
子句中执行此操作,为此目的存在HAVING
子句
尝试这样的事情
$sql = "
SELECT actief
, userid
, DATE_FORMAT(datum, '%x - %V')
, username
, min_urenperweek
, SEC_TO_TIME(SUM(TIME_TO_SEC(tijd_tot) - TIME_TO_SEC(tijd_van))) timediff
FROM " . TBL_URENREGISTRATIE . " ur
JOIN " . TBL_CMS_USERS . " us
ON us.userid = ur.userid
GROUP
BY actief
, userid
, DATE_FORMAT(datum, '%x - %V')
, username
, min_urenperweek
HAVING min_urenperweek <= timediff
ORDER
BY us.username ASC
" ;