日期:2014-05-17  浏览次数:20567 次

请教左右外联的SQL
表a,b,c
a包含列id,tt
b包含列id,name,rr
c包含列name,qq

我可以生成一个这样的表吗?
a.id, a.tt, b.name, b.rr, c.qq
我想法是a左连(b左连c),但是不行

求教!!谢谢!!

------解决方案--------------------
select a.id, a.tt, b.name, b.rr, c.qq
from b
left join a on b.id =a.id
left join c on c.name =b.name


没出来主要是数据问题。
------解决方案--------------------
select a.id, a.tt, b.name, b.rr, c.qq 
from a left join (b left join c on b.name=c.name) on a.id=b.id

其实直接按顺序写就可以
select a.id, a.tt, b.name, b.rr, c.qq 
from a left join b on a.id=b.id left join c on b.name=c.name

因为如果b表不存在的数据,c表肯定也没有对应值,结果还是null
------解决方案--------------------


--莫非你是SQL Server2000???

select a.id,a.tt,t.name,t.rr,t.qq
from a 
left join (select b.id,b.name,b.rr,c.qq from b left join c on b.name=c.name) t
on a.id=t.id