2017-10-10 96 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 ;-) –