日期:2014-05-18  浏览次数:20466 次

求一较复杂的SQL语句
例:现有表1(ta)、表2(tb)、表3(tc),需从3个表中查询一些信息
表1
ta
-------------------------------------
ta01 ta02 ta03 ta04 ta05
A1 B1 C D E  
...
-------------------------------------
表2
tb
-------------------------------------
tb01 tb02 tb03 tb04 tb05
A1 B1 W X1 Y1
...
-------------------------------------
表3
tc
-------------------------------------
tc01 tc02 tc03 tc04 tc05
X1 Y1 类型1 品种1 Z
X1 Y1 类型1 品种2 ZZ
X1 Y1 类型2 品种1 ZZZ
X1 Y1 类型2 品种2 ZZZ
...
-------------------------------------

表间的关联关系如下:
ta与tb ta01=tb01 and ta02=tb02
tb与tc tb04=tc01 and tb05=tc01
现要显示如下结果:
-----------------------------------------------------------------
ta01 ta02 ta03 tb03 tb04 tb05 tc05(类型1 and 品种1) tc05(类型2 and 品种1) tc05(类型2 and 品种2)

-----------------------------------------------------------------

请问如何用一条语句实现?

------解决方案--------------------
select a.ta01,a.ta02,a.ta03,b.tb03,b.tb04,b.tb05,
'tc05'=(select tc05 from tc where tc03=类型1 and tc04=品种1 and tc01=c.tc01),
'tc05'=(select tc05 from tc where tc03=类型2 and tc04=品种1 and tc01=c.tc01),
'tc05'=(select tc05 from tc where tc03=类型2 and tc04=品种2 and tc01=c.tc01)
from ta a join tb b on a.ta01=b.tb01 and a.ta02=b.tb02
join tc c on b.tb04=c.tc01 and b.tb05=c.tc01