Mysql计数有3个表

时间:2013-07-03 11:37:13

标签: mysql join count

我有三张桌子:

用户: ID,姓名
转移: id,date_start,date_end
users_shifts: user_id,shift_id

我想让所有在特定日期范围中完成 n shift 的用户,其中n可以是任何整数(也是0!)。

我可以让所有用户获得他们这样做的轮班次数:

SELECT 
    users.*,
    COUNT(users_shifts.user_id) AS nr_shifts
FROM 
    users
LEFT JOIN 
    users_shifts ON users.id = users_shifts.user_id
GROUP BY 
    users.id

我不知道如何:
1)将日期范围添加到此查询中 2)将结果限制为特定的nr_shifts

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

SELECT 
users.*,
COUNT(users_shifts.user_id) AS nr_shifts
FROM 
users
LEFT JOIN 
users_shifts ON users.id = users_shifts.user_id
WHERE shifts.date_end = '10/OCT/2012'
GROUP BY 
users.id
Order by users.id
LIMIT 10

答案 1 :(得分:0)

第二次加入不能满足您的需求?

SELECT 
    users.*,
    COUNT(users_shifts.user_id) AS nr_shifts
FROM 
    users
LEFT JOIN 
    users_shifts ON users.id = users_shifts.user_id
LEFT JOIN
    shifts ON shifts.id = users_shifts.shift_id
WHERE
    shifts.date_start BETWEEN 2013-06-01 and 2013-06-30
    OR ISNULL(shifts.date_start)
GROUP BY 
    users.id