100分请教一个多表SQL连接,谢谢
表如下:
表1
[DClass]
ID|clan
--------
2 |aa
3 |bb
--------
表2
[dinfo]
ID|DCID|Dname
-------------
1 |2 |da
2 |2 |ds
3 |3 |de
-------------
表3
[Tindex]
ID|Tno|tdate
----------
1 |001|2013-5-5
2 |002|2013-5-6
3 |003|2013-5-5
4 |004|2013-5-6
----------
表4
[Tbody]
ID|Iid|did|tnum|tm
-------------------
1 |1 |2 |5 |10
2 |1 |3 |2 |5
3 |2 |2 |5 |8
4 |2 |3 |2 |3
5 |1 |2 |5 |10
6 |3 |3 |2 |5
7 |3 |2 |5 |8
8 |2 |3 |2 |3
-------------------
关系:dclass.id=dinfo.dcid
tindex.id=tbody.iid
tbody.did=dinfo.id
要求结果:
tdate=2013-5-5
clan=aa
dname|tnum|tm
-----------------------
da |0 |0
ds |15 |28
谢谢,100分
------解决方案--------------------不知道你的结果 怎么来的
dname
------解决方案--------------------tnum
------解决方案--------------------tm
-----------------------
da
------解决方案--------------------0
------解决方案--------------------0
ds
------解决方案--------------------15
------解决方案--------------------28
select dname,
tnum,
tm
from DClass dc
LEFT JOIN dinfo d
on dc.ID=d.DCID
LEFT JOIN Tbody t
on t.did=d.ID
LEFT JOIN Tindex ti
on ti.id=t.iid
where ti.tdate='2013-5-5' AND dc.clan='aa'
------解决方案--------------------
with DClass(ID,clan) as(
select 2,'aa' union
select 3,'bb')
,dinfo(ID,DCID,Dname) as(
select 1,2,'da' union
select 2,2,'ds' union
select 3,3,'de')
,Tindex(ID,Tno,tdate) as(
select 1,'001','2013-5-5' union
select 2,'002','2013-5-6' union
select 3,'003','2013-5-5' union
select 4,'004','2013-5-6')
,Tbody(ID,Iid,did,tnum,tm)as(
select 1 ,1 ,2 ,5 ,10 union
select 2 ,1 ,3 ,2 ,5 union
select 3 ,2 ,2 ,5 ,8 union