有两个表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
请问要怎样写这样的查询语句?
表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
请问要怎样写这样的查询语句?
解决方案 »
- 类似google地图那种的模糊查询怎么做啊?
- 请教各位一个比较菜的存储过程设计问题
- SQL语句,求丢失记录号!
- 关于关联表查询问题!
- 数据导入问题?头大呀,在线等待
- SQL Server 设置了自动收缩,为什么还是会有提示事务日志已满?
- 混合模式下连接SQL Server是否需要先用Windows帐号登录服务器?
- 我的服务器,数据库sql server 2000 出现3704的错误,你遇到过吗?就是运行一段时间就出错,只能重启。
- *.sql文件是怎样进行恢复的,谢谢了
- 在一台win2000sever的机子上装上sql2000server,然后在win98的机子上用vb访问sql,这是不是就是c/s程序
- 请问做一个数据库备份时将完全、差异和事务日志都做了有必要吗?怎样做分发和订阅?
- SQL Server 2000 SP4 安裝失敗
from A left join B on datediff(day,A.Date,B.date)=0
where datediff(day,getdate(),a.date)=0
表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
datediff(day,getdate(),B.date)=0 or datediff(day,getdate(),A.date=0)
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
(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