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

zugoucom 2012-11-28 02:00:24
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这天时,能显示张三,李四,王五(因为都没有登记过),请问该如何实现?
...全文
79 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zugoucom 2012-11-28
  • 打赏
  • 举报
回复
yangsh0722 正解。
-Tracy-McGrady- 2012-11-28
  • 打赏
  • 举报
回复

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')
99归一 2012-11-28
  • 打赏
  • 举报
回复

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
-Tracy-McGrady- 2012-11-28
  • 打赏
  • 举报
回复
“因为都没有登记过”是什么意思?
开启时代 2012-11-28
  • 打赏
  • 举报
回复
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
Viccy_Yao 2012-11-28
  • 打赏
  • 举报
回复
select a.userName,b.date,b.shangban from a,b where a.userid=b.userid and b.date<>null

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧