mysql - SQL计数和求和问题

标签 mysql sql

我有 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。

这是一个示例:http://sqlfiddle.com/#!9/a9f9f/1

最佳答案

首先尝试将发票计数和总和分组为子查询,例如:

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/

相关文章:

Lion 上的 MYSQL - 设置 root 密码

php - mysql 选择一个列作为另一个列名,该列将具有全文索引

mysql - 高级 MySQL 模式匹配(超越 LIKE...%)

mysql - SQL 返回不正确的行数

sql - 具有不同排序规则的数据库可以在一台服务器上相处吗?

mysql - SQL 类似带有附加字符

php - 问题 : Writing a MySQL parser to split JOIN's and run them as individual queries (denormalizing the query dynamically)

php - 有没有办法在 wamp server 2.4 中为 phpmyadmin 添加自定义虚拟主机名?

PHP MySQL删除行不起作用

php - 允许用户在一个字段中搜索两个搜索词