统计数据报表功能

     最近需要实现一个统计优惠券明细的功能,大致需求是选择优惠券,来查询领取了该优惠券的导购员,领取的总数量,发放的数量,剩余量,以及领取了该优惠券的会员,领取的数量和使用状态。

    这里涉及了到了5张表,优惠券表,优惠券和导购关联表,导购信息表,优惠券和会员关联表,会员信息表。他们的关系大致为下图:


会员信息表VID(主键)=优惠券和会员关联表VIPID

优惠券和会员关联表MID=优惠券表.ID(主键)

优惠券表ID(主键)=优惠券和导购关联表.ECID

优惠券和导购关联表.uid=导购信息表.ACC(主键)


然后查询优惠券相关联的导购,以及导购领取该优惠券的剩余量,发放量和总量

sql语句如下:

SELECT USERINFO.UNAME,ENTINFO.ENAME,TTL.UID,TTL.TTLCOUNT AS uidtotalnumber,RC.RCOUNT AS uidremain
FROM (SELECT UID,COUNT(ID) AS TTLCOUNT FROM ls_bs_ecoupond WHERE ECID = #{p.id} AND STATU = 0 GROUP BY UID) TTL
LEFT JOIN (SELECT UID,COUNT(ID) AS RCOUNT FROM ls_bs_ecoupond WHERE ECID =#{p.id} AND STATU !=0 GROUP BY UID) RC
ON TTL.UID = RC.UID
INNER JOIN LS_BS_USERINFO USERINFO ON USERINFO.ACC = TTL.UID
LEFT JOIN LS_MD_USERENT USERENT ON USERINFO.ACC = USERENT.UID
LEFT JOIN LS_BS_ENTINFO ENTINFO ON ENTINFO.ID = USERENT.EID
WHERE ENTINFO.ETYPE IN ('S','M','Z')


另外查询会员的领取信息(领取会员,领取数量,使用状态(使用,未使用))的sql:

SELECT VIP.VIPNAME,TTL.EID,TTL.VIPID,TTL.TTLCOUNT AS viptotalcoupons,UC.VRCOUNT AS vipalreadycoupons
FROM (SELECT COU.VIPID,COU.EID,COUNT(COU.ID) AS TTLCOUNT FROM ls_bs_coupon cou
WHERE cou.MID = #{p.id} GROUP BY COU.VIPID,COU.EID) TTL
LEFT JOIN
(SELECT COU.VIPID,COU.EID,COUNT(COU.ID) AS VRCOUNT FROM ls_bs_coupon cou
WHERE cou.MID = #{p.id} AND COU.CTYPE=2 GROUP BY COU.VIPID,COU.EID) UC
ON TTL.EID = UC.EID AND TTL.VIPID = UC.VIPID
LEFT JOIN ls_bs_vipinfo VIP ON VIP.VID = TTL.VIPID AND VIP.EID = TTL.EID
GROUP BY VIP.vid


下面这条sql则是根据uid(导购的id)来查询该导购下有那些会员领取他所发放的优惠券信息:

SELECT VIP.VIPNAME,TTL.EID,TTL.VIPID,TTL.TTLCOUNT AS viptotalcoupons,UC.VRCOUNT AS vipalreadycoupons
FROM (SELECT coud.uid, COU.VIPID,COU.EID,COUNT(COU.ID) AS TTLCOUNT FROM ls_bs_coupon cou LEFT JOIN ls_bs_ecoupond coud ON cou.mid= coud.ecid AND coud.id=cou.cid
WHERE cou.MID = #{p.id} AND cou.ctype='0' AND coud.uid=#{p.uid} GROUP BY COU.VIPID,COU.EID,coud.ecid) TTL
LEFT JOIN
(SELECT COU.VIPID,COU.EID,COUNT(COU.ID) AS VRCOUNT FROM ls_bs_coupon cou LEFT JOIN ls_bs_ecoupond coud ON cou.mid= coud.ecid AND coud.id=cou.cid
WHERE cou.MID = #{p.id} AND COU.CTYPE='2' AND coud.uid=#{p.uid} GROUP BY COU.VIPID,COU.EID,coud.ecid) UC
ON TTL.EID = UC.EID AND TTL.VIPID = UC.VIPID
LEFT JOIN ls_bs_vipinfo VIP ON VIP.VID = TTL.VIPID AND VIP.EID = TTL.EID
GROUP BY VIP.vid

以下附上5张表的截图

1.优惠券表



2.优惠券和会员关系表



3.会员信息表



4.优惠券和导购关系表



5.导购表




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值