2010-10-29 81 views
1

我需要你的幫助....我正在爲我的公司做一點時間管理系統。MySql - 查詢結構中的問題

我有幾個表,其中包括這兩個表:

Pointage

Id_check | id_user |周|時間| ......。

用戶

Id_user | first_name | last_name | .........

我想找一個方法來構建一個報告,讓我所有沒有檢查過去幾周的5天的人。例如

Id_user |周|時間

所以我創建了一個查詢這樣的:

SELECT week,id_user,SUM(time) AS totalW FROM pointage WHERE week<42 
GROUP BY id_user,week HAVING totalW<5 ORDER BY id_user 

我的問題是,這個查詢給我鱸只有當該人已至少檢查一次(一週)。

例如,如果id_user'1'沒有檢查第40周的任何時間,他將不會出現在我的報告中。一個查詢應該給我所有人在檢查後期的一個重要問題。如果他至少檢查過一次,例如1天,他會出現。

我試圖修改我的查詢,我創建了一個新的'星期'表,加入它與左/右加入,但我沒有找到任何解決方案來解決我的願望!

所以我最後的機會是發佈這條消息!

您是否有想法獲得此報告?

非常感謝您的幫助,並對我的英語不好!

薩科

+0

我不知道 「functionnality」 的紀錄。我現在會接受未來的答案! – sanceray3 2010-10-29 08:33:43

回答

1
select week.week, users_id_users, 
(
    select 
    if(sum(time) is null, 0, sum(time)) 
    from pointage 
    where users.id_user=pointage.id_user and pointage.week=week.week 
    group by pointage.id_user 
    having count(*)<5 
) as sum_time 
from users, week 
where week.week<42 
  • 假設你每週表包含1..52周
+0

非常感謝,它的功能有一些修改:select period.id_week,users.id_user,IFNULL( ( )從點數 中選擇總和id_week group by pointage.id_user ),0)as sum_time from users,week where week.id_week <42 – sanceray3 2010-11-09 08:37:44