我有一个查询,用于计算每个用户的工作时间。
$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
但它不起作用
最佳答案
GROUP BY
子句中的字段应与SELECT
子句中的字段相同,但这些字段不是聚合函数。您不能在
WHERE
子句中的SELECT
子句中指定别名。如果您想过滤聚合结果,则无法在
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
" ;
关于php - Timediff计算where查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46660211/