小编典典

如何从链接到第三张表的两个不同表中获取SUM

sql

好的问题是,我必须对两个链接的表中的两个和求和

第一表要点:

id | user_id | point | hit
1  | 1       |     4 | yes
2  | 1       |     2 | yes
3  | 1       |    -3 | no
4  | 1       |     4 | mb
5  | 2       |     2 | yes
6  | 2       |    -3 | no
7  | 2       |     4 | mb

第二张表的收入:

id | user_id | earning
1  | 1       |   5      
2  | 1       |   2     
3  | 1       |   3     
4  | 1       |   4     
5  | 2       |   2    
6  | 2       |   3    
7  | 2       |   4

现在我试过的是:

SELECT 
    p.id, 
    SUM( SUM(p.point) + SUM(e.earning) ) AS bb 
FROM 
    points p LEFT JOIN earnings e ON p.user_id = e.user_id 
WHERE 
    (p.hit = "yes" OR p.hit = "no") 
GROUP BY 
    p.user_id

但我得到了错误的结果

我想得到这个:

id | bb
1  | 17
2  | 8

谢谢!


阅读 207

收藏
2021-04-14

共1个答案

小编典典

如果要获得每位用户的总收入,则可能应该先确定要为其获得收入的用户。最明智的选择可能是使用users表本身作为基础。

SELECT user_id,
       (SELECT SUM(point)
          FROM points
         WHERE user_id = u.user_id
       )
       +
       (SELECT SUM(earning)
          FROM earnings
         WHERE user_id = u.user_id
           AND p.hit IN ('yes', 'no')
       ) AS bb
  FROM users

这种方法的附加好处是可以报告没有积分和/或收入的用户。

2021-04-14