我的桌子
产品销售
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";
但是在付款栏中结果返回不正确的值。
按发票预先汇总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;
注意:每张发票仅允许使用一个名称。