如何加入两个table来显示每个id的销售额
How to join two table to display sales for each id
我试图通过使用 id 组合两个 table 来显示每个 id 的总销售额。我有两个 table 1. 用户 table, 2. 销售 table
//user table
--------------
| id | name |
---------------
| 1 | yuki |
| 2 | soman |
---------------
// sales table
--------------
| id | total|
---------------
| 1 | 300 |
| 2 | 23 |
| 1 | 500 |
---------------
根据我的查询,它只显示 1 个销售 是 yuki 的销售。
SELECT i.name,SUM(ROUND(s.total),2)) AS sales
FROM user i
INNER JOIN sales s
ON i.id = s.id
--------------
| name | sales|
---------------
| yuki | 800 |
---------------
我想像这样显示输出,我的查询遗漏了什么?
--------------
| name | sales|
---------------
| yuki | 800 |
|soman | 23 |
---------------
您的查询需要 group by
子句:
SELECT u.name, SUM(ROUND(s.total),2)) AS sales
FROM user u
INNER JOIN sales s ON s.id = u.id
GROUP BY u.id, u.name
当启用 sql 模式 ONLY_FULL_GROUP_BY
时,更容易发现此类错误。
作为替代方案,您可能需要考虑一个相关子查询,它避免了外部聚合(它实际上表现得像 LEFT JOIN
,这可能更接近您想要的):
SELECT u.*,
(SELECT SUM(ROUND(s.total),2)) FROM sales s WHERE s.id = u.id) AS sales
FROM user u
旁注:user
是语言关键字,因此不是列名的好选择。考虑使用其他东西,例如 users
。
我试图通过使用 id 组合两个 table 来显示每个 id 的总销售额。我有两个 table 1. 用户 table, 2. 销售 table
//user table
--------------
| id | name |
---------------
| 1 | yuki |
| 2 | soman |
---------------
// sales table
--------------
| id | total|
---------------
| 1 | 300 |
| 2 | 23 |
| 1 | 500 |
---------------
根据我的查询,它只显示 1 个销售 是 yuki 的销售。
SELECT i.name,SUM(ROUND(s.total),2)) AS sales
FROM user i
INNER JOIN sales s
ON i.id = s.id
--------------
| name | sales|
---------------
| yuki | 800 |
---------------
我想像这样显示输出,我的查询遗漏了什么?
--------------
| name | sales|
---------------
| yuki | 800 |
|soman | 23 |
---------------
您的查询需要 group by
子句:
SELECT u.name, SUM(ROUND(s.total),2)) AS sales
FROM user u
INNER JOIN sales s ON s.id = u.id
GROUP BY u.id, u.name
当启用 sql 模式 ONLY_FULL_GROUP_BY
时,更容易发现此类错误。
作为替代方案,您可能需要考虑一个相关子查询,它避免了外部聚合(它实际上表现得像 LEFT JOIN
,这可能更接近您想要的):
SELECT u.*,
(SELECT SUM(ROUND(s.total),2)) FROM sales s WHERE s.id = u.id) AS sales
FROM user u
旁注:user
是语言关键字,因此不是列名的好选择。考虑使用其他东西,例如 users
。