MySql - 查询构造中的问题

时间:2010-10-29 07:54:49

标签: 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天,他就会出现。

我试图修改我的查询,我创建了一个新表'周',加入LEFT / RIGHT JOIN,但我找不到任何解决方案来解决我的愿望!

所以我最后一次机会就是发布这条消息!

您是否有想法获取此报告?

非常感谢你的帮助,并为我糟糕的英语感到抱歉!

尼古拉斯

1 个答案:

答案 0 :(得分: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周的记录