我有 2 个包含数据的表。
第一个表cus
包含客户数据。第二个表invoice
包含客户创建的发票。
我想选择创建的发票总数以及每个客户的发票总额。
这是我所拥有的:
SELECT cus.cus_id, cus.name_cus, count(invoice.id) as id2, CONCAT('€ ', ROUND(SUM(invoice.total),2)) as total, cus.id
FROM cus
LEFT OUTER JOIN invoice ON cus.cus_id = invoice.cus_id
WHERE cus.user_id='2'
GROUP BY cus.cus_id
为了测试这一点,我已将一些数据添加到我的数据库中。第一个客户有 2 张发票,总金额为 100(50+50)。 第二位客户有 3 张发票,总金额为 30 (10+10+10)。
但是 SQL 代码没有向我显示这些结果。
客户 1 的响应:发票总数 = 1,总计 = 50 客户 1 的响应:发票总数 = 0,总计 =(空)
有人知道我的 SQL 语句出了什么问题吗?
我使用的数据库类型是MySQL。
最佳答案
首先尝试将发票计数和总和分组为子查询,例如:
SELECT cus.cus_id, cus.name_cus, inv.invoice_count, inv.invoice_total, cus.id
FROM cus
LEFT OUTER JOIN
(
SELECT inv.cus_id,
COUNT(inv.id) AS invoice_count,
CONCAT('€ ', ROUND(SUM(inv.total),2)) AS invoice_total
FROM invoice inv
GROUP BY inv.cus_id
) inv
ON cus.cus_id = inv.cus_id
WHERE cus.user_id='2'
关于mysql - SQL计数和求和问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44712519/