我有两张桌子
user_id | name |
1 | peter |
2 | kofi |
3 | sam |
4 | nasah |
5 | sarah |
6 | david |
7 | dan |
time_id | user_id | register
1 | 1 | present
2 | 2 | absent
3 | 3 | absent
4 | 4 | present
5 | 5 | absent
在“注册”栏下的“时间”表中,用户可以在登录系统时注册“在场”或“缺席”。
我想要一个mysql查询,选择那些注册“缺席”或根本没有注册的用户。
返回结果应为
kofi | absent
sam | absent
sarah | absent
david |
dan |
答案 0 :(得分:3)
这个怎么样?
SELECT t2.name, t1.register
FROM time t1
RIGHT JOIN user t2
ON t2.user_id=t1.user_id
WHERE (t1.register = 'absent' OR t1.register is null)
根据您的对话,您希望根据时间/日期进一步过滤
假设我想找出那些在06-13-12之前缺席或没有进入系统的人,假设时间表中有一个列名“日期” < / em>
使用以下查询
SELECT t2.name, t1.register, t1.mydate
FROM time t1
RIGHT JOIN user t2
ON t2.user_id=t1.user_id
WHERE
(t1.register = 'absent' OR t1.register is null)
AND
(t1.mydate <= '2012-06-13' OR t1.mydate is null)
希望这是你想要的。
答案 1 :(得分:0)
使用此查询:
SELECT t1.name,t2.register from user t1
left join time t2 on t1.user_id=t2.user_id
where t2.register='absent' or t2.register IS NULL;