2010-10-29 115 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