SQL Sever2000 多个表外连接的问题


假设有一下3个表
表A 有code(key), no, name 等字段
表B 有code(key), date, other 等字段
表C 有no(key), date(key), age 等字段

现在想查询code='01'的表A和表B中的字段。
同时用no和date同表C外连接查询age字段。

想要的下面这样的结果:
code  no  date  age
01  1  20071001  12
01  2  20071002  null
01  3  20071003  null
01  4  20071004  18
....

数据是假设的。

我想像下面这么写,但执行了以后发现不是想要的结果,在不用子查询的情况下,有什么好方法吗?
请大家指点一下,给个例子,一旦解决马上给分。谢谢!
C RIGHT OUTER JOIN A ON C.no = A.no 
  RIGHT OUTER JOIN B ON C.date = B.date

7 个解决方案

#1


没细看.随手敲的.不知是不是你要的结果

select a.code,a.no,b.date,c.age
from a
inner join b
on a.code=b.code
inner join c
on c.no=a.no and c.date=b.date

#2


关键是你结果中的code是谁的code?

#3



这样?
select a.code,a.no,b.date,c.age
    from a, b,c
    where a.code=b.code and c.no=a.no and c.date=b.date

#4


--try
select a.code,a.no,b.date,c.age
from a join b on a.code=b.code
   left join c on c.no=a.no and c.date=b.date

#5


谢谢大家。一会儿我试试,解决了今晚就结帖。

#6


--这三个中你要的是哪个?
select c.* from c
left join a on c.no = a.no where a.code = '01'

select c.* from c
left join b on c.date = b.date where b.code = '01'

select c.* from 
left join a on c.no = a.no 
left join b on c.date = b.date
where a.code = '01' and b.code = '01'

#7


select a.code,a.no,b.date,c.age
    from a
inner join b
    on a.code=b.code
inner join c
    on c.no=a.no and c.date=b.date
where a.code='01'
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告