2017-10-10 94 views
0

我有一个查询在哪里我计算每个用户的工作时间。Timediff calucate where query

$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

你可以使用HAVING,后面跟着GROUP BY子句 – Strawberry

+0

你可能有一个例子,我可以如何使用它? – Kevin

+0

您可能想给DATE_FORMAT一个别名 – Strawberry

回答

1
  1. 你应该有比你SELECT条款不属于聚合函数GROUP BY子句中相同的字段。

  2. 您不能在WHERE子句中从SELECT子句中指定别名。

  3. 如果你想在你的聚集体的结果进行筛选,你不能这样做的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 
    " ; 
+0

谢谢,它几乎工作不正常搞清楚:D – Kevin

+1

Graag gedaan ;-) –