条件复杂的sql语句查询

有三张表 分别为 会员表(member) 销售表(sale) 退货表(regoods)
会员表有字段 memberid (会员id,主键) credits(积分); 
销售表有字段 memberid(会员id ,外键) 购买金额(MNAccount);
退货表中有字段memberid(会员id ,外键) 退货金额(RMNAccount);
业务说明 : 1、销售表中的销售记录可以是会员购买,也可是非会员购买。(即销售表中的memberid可以为空)
2、销售表中的一个会员可以有多条购买记录
3、退货表中的退货记录可以是会员,也可是非会员
4、一个会员可以有一条或多条退货记录

查询需求 : 分组查出销售表中所有会员购买金额,同时分组查出退货表中所有会员的退货金额,把会员id相同的购买金额-退款金额得到的结果更新到表会员表中对应会员的积分字段(credits)

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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值