1. 程式人生 > >條件複雜的sql語句查詢

條件複雜的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