[JOUM的SUM()返回不正确的值

问题描述 投票:0回答:1

我的桌子

产品销售

id | invoice|name|amount
1     123     ab    100
2     123     ab    200

发票付款

id | invoice| discount | payment
1      123     20         280

我的PHP代码

$sql = "SELECT 
        product_sale.name, 
        SUM(product_sale.amount) AS amount, 
        SUM(invoice_payment.discount) AS discount, 
        SUM(invoice_payment.payment) AS payment 
        FROM product_sale LEFT JOIN (
        SELECT invoice, 
        SUM(discount) AS discount, 
        SUM(payment) AS payment 
        FROM invoice_payment GROUP BY invoice ) 
        invoice_payment ON 
        product_sale.invoice = invoice_payment.invoice 
        GROUP BY product_sale.name";

但是在付款栏中结果返回不正确的值。

php mysql
1个回答
0
投票

按发票预先汇总both]和[both表:

SELECT ps.name, SUM(ps.amount) AS amount, 
       SUM(ip.discount) AS discount, 
       SUM(ip.payment) AS payment 
FROM (SELECT MAX(ps.name) as name, ps.invoice, SUM(ps.amount) as amount
      FROM product_sale ps
      GROUP BY ps.invoice
     ) ps LEFT JOIN
     (SELECT invoice, SUM(discount) AS discount, SUM(payment) AS payment 
      FROM invoice_payment
      GROUP BY invoice
     ) ip
     ON ps.invoice = ip.invoice 
GROUP BY ps.name;

注意:每张发票仅允许使用一个名称。

© www.soinside.com 2019 - 2024. All rights reserved.