首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

Sql查询没打卡的用户解决思路

2013-04-02 
Sql查询没打卡的用户需求:一张打卡记录表Record{Id,Created(dateTime),UserId}用户表 User{id,Name}Record

Sql查询没打卡的用户
需求:

一张打卡记录表  Record{Id,Created(dateTime),UserId}
用户表 User{id,Name}
Record表的UserId是 User表的主键,Created就是 打卡日期。

现在 选择一个时间范围,如 2013-03-25至 2013-03-28 四天,我要查询这 4天没有打卡的用户,就是Record没有记录的用户。
要求显示 用户名Name 和 没有打卡的 日期。 如
User1  2013-03-25
User1  2013-03-26
User2  2013-03-25....


多天的查询就不会了,麻烦各位看看。谢谢! Sql
[解决办法]

select b.id ,b.name,a.Created from user b , record a

where a.Created between  '2013-03-25'and '2013-03-28'

and b.id not in (select userid from a where a.Created between  '2013-03-25'and '2013-03-28')

[解决办法]
select m.* from
(
select a.dt , b.id from
(
select '2013-03-25' dt union
select '2013-03-26' dt union
select '2013-03-27' dt union
select '2013-03-28'
) a , user b
) m
where not exists(select 1 from Record n where n.UserId = m.id and datediff(dd,n.Created,m.dt) = 0)
ordeer by m.id , m.dt

热点排行