我在下面有这个查询:
SELECT COUNT(c.status) as num,
SUM(p.total_paid_nocred) lordo,
SUM(p.total_paid) netto
FROM coupons as c,
payments as p,
addresses as a
WHERE p.payment_id=c.payment_id AND
c.address_id=a.address_id AND
c.offer_id='.$off['offer_id'].' AND
c.address_id!=0 AND
a.time <= '.$off['insertion_date'].' AND
c.user_id!=0 AND
c.status IN (1,2) AND
a.shipment_num="" AND
p.status=0 AND
p.medium!=3
我遇到的问题是,当这个查询运行时,它可以找到例如5张优惠券,在一次交易中分为3种不同的支付交易和另外2种。
要清楚。客户可以通过3次不同的交易购买3张不同的优惠券,或者他可以在一次交易中购买2张优惠券。
因此,当查询执行SUM时,如果单个事务具有2个链接的优惠券,则它会复制2个事务的数量。这不好,因为事务数量是最终的,它不必获取重复多次优惠券与该交易相关联。
我正在尝试使用GROUP BY p.payment_id
,但这样做会破坏处理此查询的其余代码。
如何仅通过唯一事务强制它为SUM,但仅限于SUM函数,并将其余部分保留为原来的颜色?
感谢您的帮助!