我需要你的帮助....我正在为我的公司制定一个小时间管理系统。
我有几个表,包括这两个表:
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,但我找不到任何解决方案来解决我的愿望!
所以我最后一次机会就是发布这条消息!
您是否有想法获取此报告?
非常感谢你的帮助,并为我糟糕的英语感到抱歉!
尼古拉斯
答案 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