有三张表 分别为 会员表(member) 销售表(sale) 退货表(regoods)
会员表有字段 memberid (会员id,主键) credits(积分);
销售表有字段 memberid(会员id ,外键) 购买金额(MNAccount);
退货表中有字段memberid(会员id ,外键) 退货金额(RMNAccount);
业务说明 : 1、销售表中的销售记录可以是会员购买,也可是非会员购买。(即销售表中的memberid可以为空)
2、销售表中的一个会员可以有多条购买记录
3、退货表中的退货记录可以是会员,也可是非会员
4、一个会员可以有一条或多条退货记录
查询需求 : 分组查出销售表中所有会员购买金额,同时分组查出退货表中所有会员的退货金额,把会员id相同的购买金额-退款金额得到的结果更新到表会员表中对应会员的积分字段(credits)
我个人觉得用一个sql语句好像有些困难,建议写存储过程来实现,好久不用,也记不大太多
下面是分组查出销售表中所有会员购买金额的sql语句:
select sum(sale.MNAccount) from sale, member where sale.member_id=member.id group by member.id;
希望能对你有帮助!
select s.memberid, s.y1, s1.y2, (s.y1 - s1.y2)
from (select y.memberid, sum(y.MNAccount) y1
from member d
left join sale y
on d.memberid = y.memberid
group by y.memberid) s
left join (select y.memberid, sum(y.RMNAccount) y2
from member d
left join regoods y
on d.memberid = y.memberid
group by y.memberid) s1
on s.memberid = s1.memberid
这个可以一次查出你需要的所有数据,至于插值。这个SQL 查询只查ID 和金额差。 写个存储插进去就好。