我有三张桌子:
用户: 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
非常感谢任何帮助。
答案 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