MySQL SUM计算不基于行数,而是基于唯一结果

时间:2014-05-31 12:28:09

标签: mysql sql

我在下面有这个查询:

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函数,并将其余部分保留为原来的颜色?

感谢您的帮助!

0 个答案:

没有答案