关于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 正解。