條件複雜的sql語句查詢
阿新 • • 發佈:2018-12-24
有三張表 分別為 會員表(member) 銷售表(sale) 退貨表(regoods)
會員表有欄位 memberid (會員id,主鍵) credits(積分);
銷售表有欄位 memberid(會員id ,外來鍵) 購買金額(MNAccount);
退貨表中有欄位memberid(會員id ,外來鍵) 退貨金額(RMNAccount);
業務說明 : 1、銷售表中的銷售記錄可以是會員購買,也可是非會員購買。(即銷售表中的memberid可以為空)
2、銷售表中的一個會員可以有多條購買記錄
3、退貨表中的退貨記錄可以是會員,也可是非會員
4、一個會員可以有一條或多條退貨記錄
會員表有欄位 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