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

表连接的语句 (紧急求助)

XF_BANKCARDLEDGER //店铺号 表1 获取店铺号
XF_STORECODE //店铺号字段
  XF_TXDATE //时间

XF_TRANSSALESITEM //商品号 表2 获取商品号 获取销售金额总和
XF_STORECODE //店铺号字段
XF_PLU //商品号
sum(XF_AMTSOLD) //销售金额的总和
  XF_TXDATE //时间

XF_BSSETTLEMEMOD1_EXT //扣率 表3 获取扣率 获取店铺类型
  XF_COMMRATE //扣率字段
XF_BSCHARGECODE //店铺类型编号
XF_REFSTORECODE //商铺号
  XF_REFTXDATE //时间

XF_BSCONTRACTH //店铺名称 表4 获取店铺名称
XF_STORECODE //店铺号字段
XF_CONTRACTDESC //店铺名称字段
   
where 

select a.XF_STORECODE,b.XF_STORECODE,b.XF_PLU,c.XF_COMMRATE,c.XF_BSCHARGECODE,d.XF_STORECODE,d.XF_CONTRACTDESC from XF_BANKCARDLEDGER a left join XF_TRANSSALESITEM b on a.XF_STORECODE=b.XF_STORECODE left join XF_BSSETTLEMEMOD1_EXT c on b.XF_STORECODE=c.XF_REFSTORECODE left join XF_BSCONTRACTH d on d.XF_STORECODE=c.XF_REFSTORECODE

这句 一直出同一个结果。 什么问题呢. 帮忙写一个效率高点的吧. 4个表关联一下 拿商铺名称关联  

表的共同特点 4张表都有 店铺号字段. 但是 表1的店铺号最全 想把表1的店铺号全显示出来 然后用 where 时间 过滤一下.

------解决方案--------------------
存储过程?
1.temp1,a表时间段内数据
2.temp2,temp1 left join b表时间段内数据
3.temp3,temp2 left join c表时间段内数据
4.temp4,temp3 left join d表时间段内数据
------解决方案--------------------
--试试把联立条件全部写成A的左联接
FROM XF_BANKCARDLEDGER a
LEFT JOIN XF_TRANSSALESITEM b
ON a.XF_STORECODE=b.XF_STORECODE
LEFT JOIN XF_BSSETTLEMEMOD1_EXT c
ON a.XF_STORECODE=c.XF_REFSTORECODE
LEFT JOIN XF_BSCONTRACTH d
ON a.XF_STORECODE=d.XF_REFSTORECODE
------解决方案--------------------
SQL code


--试下这个
SELECT a.XF_STORECODE,b.XF_STORECODE,b.XF_PLU,c.XF_COMMRATE,c.XF_BSCHARGECODE,d.XF_STORECODE,d.XF_CONTRACTDESC 
  FROM XF_BANKCARDLEDGER a ,XF_TRANSSALESITEM b,F_BSSETTLEMEMOD1_EXT c, XF_BSCONTRACTH d 
  WHERE a.XF_STORECODE=b.XF_STORECODE AND b.XF_STORECODE=c.XF_REFSTORECODE AND c.XF_REFSTORECODE=d.XF_STORECODE