1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 统计数据报表功能

统计数据报表功能

时间:2020-07-06 22:56:46

相关推荐

统计数据报表功能

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

这里涉及了到了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.导购表

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。