假设各表有唯一ID,FID关联父表的ID
D:
select d.ee/d.ff ddbl,d.ID,d.FID from d) dd 
C:
(select avg(dd.ddbl) ccbl,c.ID,c.FID from c left join dd on c.id=dd.FID group by c.ID,c.FID) cc
B:
(select avg(cc.ccbl) bbbl,b.ID,b.FID from b left join cc on b.id=cc.FID group by b.ID,b.FID) cc
A:
(select avg(bb.ccbl) aabl,a.ID from a left join bb on a.id=bb.FID group by a.ID)

解决方案 »

  1.   

    A:
    (select avg(bb.bbbl) aabl,a.ID from a left join bb on a.id=bb.FID group by a.ID)
      

  2.   

    我是想一條SQL搞掂啊~~有辦法嗎?
      

  3.   

    http://bbs.heshanren.com/UploadFile/20031221449970955.bmp
      

  4.   

    四条合一起呀,DD,CC,BB用的前面的别名,你替换一下不就是一条了吗?
      

  5.   

    select p.id,avg(q.percent) as percent
    from a p join (select m.pId,avg(n.percent) as percent
                 from b m join (select pId,avg(y.percent) as percent
                                from c x join (select pId,(EE/FF) as percent
                                               from d
                                               where FF>0) y on x.id=y.pId
                                  group by x.pId) n on  m.id=n.pId) q on a.id=q.PId
    group by p.Id
    order by percent注意:性能可能不太好
      

  6.   

    select avg(bb.ccbl) aabl,a.ID from a left join (select avg(cc.ccbl) bbbl,b.ID,b.FID from b left join (select avg(dd.ddbl) ccbl,c.ID,c.FID from c left join (select d.ee/d.ff ddbl,d.ID,d.FID from d) dd 
     on c.id=dd.FID group by c.ID,c.FID) cc
     on b.id=cc.FID group by b.ID,b.FID) bb
     on a.id=bb.FID group by a.ID