qq_24835349
qq_24835349
采纳率5.3%
2016-03-28 00:28 阅读 2.2k

条件复杂的sql语句查询

有三张表 分别为 会员表(member) 销售表(sale) 退货表(regoods)
会员表有字段 memberid (会员id,主键) credits(积分);
销售表有字段 memberid(会员id ,外键) 购买金额(MNAccount);
退货表中有字段memberid(会员id ,外键) 退货金额(RMNAccount);
业务说明 : 1、销售表中的销售记录可以是会员购买,也可是非会员购买。(即销售表中的memberid可以为空)
2、销售表中的一个会员可以有多条购买记录
3、退货表中的退货记录可以是会员,也可是非会员
4、一个会员可以有一条或多条退货记录
查询需求 : 分组查出销售表中所有会员购买金额,同时分组查出退货表中所有会员的退货金额,把会员id相同的购买金额-退款金额得到的结果更新到表会员表中对应会员的积分字段(credits)

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • qq_25275583 qq_25275583 2016-03-28 02:48

    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 和金额差。 写个存储插进去就好。
    
    点赞 1 评论 复制链接分享
  • zengna 米娜嘟 2016-03-28 01:45

    我个人觉得用一个sql语句好像有些困难,建议写存储过程来实现,好久不用,也记不大太多
    下面是分组查出销售表中所有会员购买金额的sql语句:
    select sum(sale.MNAccount) from sale, member where sale.member_id=member.id group by member.id;

    希望能对你有帮助!

    点赞 评论 复制链接分享

相关推荐