【发布时间】:2012-05-23 22:12:54
【问题描述】:
一个人从他推荐的朋友的购买中获得 10% 的佣金。
有两个表:
- 参考表
- 事务表
参考表
Person_id Referrer_id
3 1
4 1
5 1
6 2
事务表
Person_id Amount Action Date
3 100 Purchase 10-20-2011
4 200 Purchase 10-21-2011
6 400 Purchase 12-15-2011
3 200 Purchase 12-30-2011
1 50 Commision 01-01-2012
1 10 Cm_Bonus 01-01-2012
2 20 Commision 01-01-2012
如何为 Referrer_Person_id=1 获取以下结果集
Month Ref_Pur Earn_Comm Todate_Earn_Comm BonusRecvd Paid Due
10-2011 300 30 30 0 0 30
11-2011 0 0 30 0 0 30
12-2011 200 20 50 0 0 50
01-2012 0 0 50 10 50 0
上面使用的标签是:
Ref_Pur = Total Referred Friend's Purchase for that month
Earn_Comm = 10% Commision earned for that month
Todate_Earn_Comm = Total Running Commision earned upto that month
我写的MYSQL代码
SELECT dx1.month,
dx1.ref_pur,
dx1.earn_comm,
( @cum_earn := @cum_earn + dx1.earn_comm ) as todate_earn_comm
FROM
(
select date_format(`date`,'%Y-%m') as month,
sum(amount) as ref_pur ,
(sum(amount)*0.1) as earn_comm
from transaction tr, reference rf
where tr.person_id=rf.person_id and
tr.action='Purchase' and
rf.referrer_id=1
group by date_format(`date`,'%Y-%m')
order by date_format(`date`,'%Y-%m')
)as dx1
JOIN (select @cum_earn:=0)e;
如何加入不依赖参考表的BonusRecvd、Paid和Due trnsactions查询?
并为“11-2011”月生成行,即使该月没有发生 trnx
【问题讨论】:
-
@chris 我试过的可以显示 ref_pur,Earn_comm,Todate_Earn_Comm 但无法包括 BonusRecvd,Paid 和 Due。
-
@chris 也无法为“11-2011”月生成行,因为该月没有发生 trnx