有两个表A,B
表A
  Name  date
   A    2006-5-14
   B    2006-5-15 表B
   Name   date
    x     2006-5-14  
    y     2006-5-15这两个表分别是不同的人每天填写的.由于某各原因,他们不是同时填写的.
我现在要选出今天的人员名单,得到以下的结果
AName BName  date
B     Y   2005-5-14如果我用这样的语句:
select A.Name as AName,B.Name as BName from A,B where 
datediff(day,A.Date,B.date)=0 and datediff(day,getdate(),a.date=0)
当两个表都有数据时,结果正确,如果只要有一个表没填数据,就得不到想要的结果.
比如,B今天没填数据时,我想得到如下的结果:
AName BName  date
B     null   2005-5-14
请问要怎样写这样的查询语句? 

解决方案 »

  1.   

    select A.Name as AName,B.Name as Bname,A.date from A left join B on datediff(day,A.Date,B.date)=0 and datediff(day,getdate(),a.date)=0
      

  2.   

    select A.Name as AName,B.Name as Bname,A.date 
    from A left join B on datediff(day,A.Date,B.date)=0 
    where datediff(day,getdate(),a.date)=0
      

  3.   

    谢谢itblog(i like i do) .可是当A表没有今天的数据,而B表有今天的数据,同时得不到结果
      

  4.   

    比如我的表的数据是这样的:
    表A
      Name  date
       A    2006-5-14
    表B
       Name   date
        x     2006-5-14  
        y     2006-5-15
    用你的语句得到的结果是空,而我想要的结果是:
    AName  BName date 
    null   y     2006-5-15
      

  5.   

    select A.Name as AName,B.Name as BName from A,B where 
    datediff(day,getdate(),B.date)=0 or datediff(day,getdate(),A.date=0)
      

  6.   

    select A.Name as AName,B.Name as Bname,A.date 
    from A full join B on datediff(day,A.Date,B.date)=0 
    where datediff(day,getdate(),a.date)=0
    or
    select A.Name as AName,B.Name as Bname,A.date from A full join B on datediff(day,A.Date,B.date)=0 and datediff(day,getdate(),a.date)=0
      

  7.   

    select distinct aname,bname,adate from 
    (select A.Name as AName,B.Name as Bname,A.date as ADate
    from A left join B on datediff(day,A.Date,B.date)=0 
    where datediff(day,getdate(),a.date)=0
    union
    select A.Name as AName,B.Name as Bname,B.date as ADate
    from A right join B on datediff(day,A.Date,B.date)=0 
    where datediff(day,getdate(),a.date)=0) as tt