【发布时间】:2026-02-16 16:35:01
【问题描述】:
我有 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。
【问题讨论】:
-
不确定这是哪种类型的数据库,但我很惊讶它按原样运行。您正在选择不在分组依据中的列。您的 where 子句也使用 cus.user_id 而不是 cus_id
-
数据库是mysql。 user_id 是别的东西。对于这两个客户,
user_id = '2' -
你能提供样本数据吗?您声明客户 2 有 3 张发票。我们可以那种风格的数据。似乎问题与数据相关和/或您的加入逻辑不正确。
-
你知道像 jsfiddle 这样的网站,我可以在其中插入示例数据
-
这是一个示例:sqlfiddle.com/#!9/a9f9f/1