Mysql 在多个不相关的表上求和值?
我有三个表格:用户、销售额和积分 每个用户都有多个销售和多个积分 销售有一列“值”,积分有一列“分数”,就像这样 现在我想展示一个所有用户的列表,包括他们的销售额和积分Mysql 在多个不相关的表上求和值?,mysql,sql,join,subquery,Mysql,Sql,Join,Subquery,我有三个表格:用户、销售额和积分 每个用户都有多个销售和多个积分 销售有一列“值”,积分有一列“分数”,就像这样 现在我想展示一个所有用户的列表,包括他们的销售额和积分 user_id | sum(sales.value) | sum(points.value) 1 | 500 | 200 2 | 213 | 132 3 . . . 是否可以在一个查询中实现,而不使用子查询 或者什么是最好、最简单的方
user_id | sum(sales.value) | sum(points.value)
1 | 500 | 200
2 | 213 | 132
3 . . .
是否可以在一个查询中实现,而不使用子查询
或者什么是最好、最简单的方法?我正在尽可能地简化它,因为我有很多与用户相关的信息,我必须以这种方式显示
我尝试使用左连接,但是当我在一个查询中连接两个一对多的表时,由于重复的行,总和显然变得混乱。我试着把数据分组,但我想我迷路了 SQL中的“正确”方法是在联接表之前汇总表:
select u.user_id, sumvalue, sumscore
from users u left outer join
(select user_id, sum(value) as sumvalue
from sales
group by user_id
) s
on u.user_id = s.user_id left outer join
(select user_id, sum(score) as sumscore
from points
group by user_id
) p
on u.user_id = p.user_id;
对于以下数据,此sql提供以下结果--
您需要使用子查询。你为什么不想用呢?谢谢,我只想知道这些。这并不是我不想,我想知道是否有另一种方法,我可能不知道。
select u.user_id, sumvalue, sumscore
from users u left outer join
(select user_id, sum(value) as sumvalue
from sales
group by user_id
) s
on u.user_id = s.user_id left outer join
(select user_id, sum(score) as sumscore
from points
group by user_id
) p
on u.user_id = p.user_id;
user_id user_name
1 Davolio
2 Fuller
3 Leverling
4 Peacock
5 Buchanan
6 Suyama
7 King
8 Callahan
9 Dodsworth
sale_id user_id sale_value
10248 5 $32.38
10249 6 $11.61
10250 4 $65.83
10251 3 $41.34
10252 1 $51.30
10253 3 $58.17
10254 5 $22.98
10255 9 $148.33
10256 3 $13.97
10257 4 $81.91
point_id user_id score
10319 7 64
10320 5 35
10321 3 3
10322 7 0
10323 4 5
10324 9 214
10325 1 65
10326 4 78
10327 2 63
10333 5 1
10334 8 9
SELECT users.user_id,
users.user_name,
(SELECT SUM(sale_value) FROM sales
WHERE sales.user_id = users.user_id) AS SalesValue,
(SELECT SUM(score) FROM points
WHERE points.user_id = users.user_id) AS ScoreValue
FROM users;
user_id user_name SalesValue ScoreValue
1 Davolio $51.30 65
2 Fuller 63
3 Leverling $113.48 3
4 Peacock $147.74 83
5 Buchanan $55.36 36
6 Suyama $11.61
7 King 64
8 Callahan 9
9 Dodsworth $148.33 214