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'

注意!

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



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