我正面临一种情况,需要帮助。我有两张桌子:
用户:
user_id
,fname
,lname
,email
.
用户时间表:
time_id
,user_id
,month
,state
,date
.
用户将时间添加到user_time
表中,状态为 = 'no' 并在月底提交更改状态 = 'yes' 的时间,假设月份是 JUNE 我想编写一个查询,将带来所有用户根本没有添加时间的用户,以及添加了时间但未在 6 月提交的用户。
这是我的查询。
SELECT user_timesheet.time_id, user_timesheet.user_id,
user_timesheet.month, user_timesheet.`state`,
`user`.user_id, `user`.fname, `user`.lname,
`user`.email
FROM user LEFT JOIN
user_timesheet ON user.user_id=user_timesheet.user_id
WHERE (
user_timesheet.state = 'no' OR
user_timesheet.state IS NULL)
AND (
user_timesheet.month = 'june' OR
user_timesheet.month IS NULL)
GROUP BY user.user_id
结果将所有在 6 月添加时间但已提交的用户以及自加入后从未添加时间的用户带到系统。但是,它不会带来上个月添加时间或提交时间但根本没有添加 6 月时间的用户。