共涉及4个表,虽已实现需求,但总感觉效率不高,求最佳写法!(Access数据库)已写出的语句:select a.f_KHBH as 客户编号,a.f_KHMC as 客户名称,持卡数量,余额合计,积分合计,消费次数,消费金额,挂帐次数,
挂帐金额,免单次数,免单金额,充值次数,充值金额 from
(select * from
(select * from
(select * from
(select * from
(select * from
(select * from
(select * from
(select * from
(select * from
(select f_KHBH,f_KHMC,b.持卡数量 from d_KHXX a
left join
(select f_CKHY,count(*) as 持卡数量 from d_HYKXX group by f_CKHY) b on a.f_KHMC=b.f_CKHY) c
left join
(select f_CKHY,sum(f_DQYE) as 余额合计 from d_HYKXX group by f_CKHY) d on c.f_KHMC=d.f_CKHY) e
left join
(select f_CKHY,sum(f_DQJF) as 积分合计 from d_HYKXX group by f_CKHY) f on e.f_KHMC=f.f_CKHY) g
left join
(select f_CKHY,count(*) as 消费次数 from d_JSD where f_Flag="*" group by f_CKHY) h on g.f_KHMC=h.f_CKHY) i
left join
(select f_CKHY,sum(f_DJJE) as 消费金额 from d_JSD where f_Flag="*" group by f_CKHY) j on i.f_KHMC=j.f_CKHY) k
left join
(select f_CKHY,count(*) as 挂帐次数 from d_JSD where f_Flag="/" group by f_CKHY) l on k.f_KHMC=l.f_CKHY) m
left join
(select f_CKHY,sum(f_DJJE) as 挂帐金额 from d_JSD where f_Flag="/" group by f_CKHY) n on m.f_KHMC=n.f_CKHY) o
left join
(select f_CKHY,count(*) as 免单次数 from d_JSD where f_Flag="\" group by f_CKHY) p on o.f_KHMC=p.f_CKHY) q
left join
(select f_CKHY,sum(f_DJJE) as 免单金额 from d_JSD where f_Flag="\" group by f_CKHY) r on q.f_KHMC=r.f_CKHY) s
left join
(select f_CKHY,count(*) as 充值次数 from d_HYKCZ group by f_CKHY) t on s.f_KHMC=t.f_CKHY) u
left join
(select f_CKHY,sum(f_CZJE) as 充值金额 from d_HYKCZ group by f_CKHY) v on u.f_KHMC=v.f_CKHY

解决方案 »

  1.   

    Access数据库如果数据量大的那是有点慢.少用几个left join,多加内存表试试.
      

  2.   

    下面这两条语句是相等的,楼主可以自己改:
    select * from biao1 left join biao2 on biao1.id = biao2.id  
    select * from biao1,biao2 where biao1.id *= biao2.id
      

  3.   

    >>看得我吐血了嵌套表都到'v'了,厉害啊
      

  4.   

    >>看得我吐血了>>嵌套表都到'v'了,厉害啊呵呵,我也不想啊,谁让砣马地Access不支持 left jion ... on ... left jion ... on 的写法啊