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

关于2张表的记录读取有关问题

2012-12-27 
关于2张表的记录读取问题。A表为员工表(userid,username)。B表为员工考勤记录表(userid,date,shangban,xiaba

关于2张表的记录读取问题。
A表为员工表(userid,username)。B表为员工考勤记录表(userid,date,shangban,xiaban)。
要求读取某一天(date字段)的username,date,上班,下班几个字段。

假设通过视图可以读取如下记录:

username  date  shangban
张三    2012-11-1   8:00
李四    Null        Null
王五    Null        Null

我希望登记出勤的时候,假设我要登记2012-11-1这天,要能读取出李四,王五。要登记2012-11-2这天时,能显示张三,李四,王五(因为都没有登记过),请问该如何实现? 
[最优解释]


select username,date,shangban,xiaban 
from A left join B on A.userid=B.userid
where A.userid not in(
select userid from B where date='XXXX-XX-02')

[其他解释]
select a.userName,b.date,b.shangban from a,b
where a.userid=b.userid and b.date<>null
[其他解释]
select username,DATE,shangban
from A left join (select userid,shangban from B where DATE='xxxx-xx-xx') as b on a.userid=b.userid
[其他解释]
“因为都没有登记过”是什么意思?
[其他解释]

declare @date varchar(10)
set @date=' 2012-11-1'
SELECT a.userName,
       b.date,
       b.shangban
FROM   a 
left join b on a.userid = b.userid
WHERE  convert(varchar(10),b.date)= @date
and b.shangban is null

[其他解释]
yangsh0722 正解。

热点排行