当前位置: 首页 > 面试题库 >

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

潘秦斩
2023-03-14
问题内容

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

第一表要点:

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

谢谢!


问题答案:

如果要获得每位用户的总收入,则可能应该先确定要为其获得收入的用户。最明智的选择可能是使用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

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



 类似资料:
  • 这就是我的问题所在(在MS SQL SMS 2008 R2): 我有两个表: table1和列id1 name1 table2和列id2 name2 我还有第三个临时表,这些表是由导入的xls创建的,列为name1,name2 我希望使用select,这将导致类似于临时表的副本,但使用id1,id2而不是name1,name2。 这可能吗?

  • 我是SQL的新手,正在寻求一些帮助。我有三个表:、和(这是一个链接表)。我想实现的是,当数据插入和表(从web表单)时,如果可能的话,它们的自动增量ID将插入表。我想我需要创建触发器。表中的和是一个复合键。表结构如下: 如有任何建议,我们将不胜感激。谢谢你。

  • 问题内容: 我有一个称为消息的SQL表,它有三列 此表是用来从一个用户传送到另一个存储信息,它存储了从替代的,现在我需要创建一个视图,显示并通过获取的名称从使用表在表中的消息。 提前致谢 问题答案: 您需要使用不同的别名连接两次aspnet_Users表: 解释: 在这里,aspnet_Users表以不同的别名U1,U2连接了两次。并且每个用户名都从相应的表中获取。

  • 问题内容: 我有一张桌子和一张桌子。 该表具有以下结构: 所有用户( 投诉者 和 投诉解决者) 都位于table中。 如何编写查询以显示两列的用户名? 这给了我一个: 但我不知道如何编写,因此两列均显示用户名而不是ID。 问题答案:

  • 问题内容: 没有多个子查询,我想不出一个查询此问题的好方法。我无法重组表,所以这不是一种选择。设置如下: 面对面的每个ID的类型均为person_status_types。我需要提取的是每个id的本人的status_type_name。 所以return语句看起来像这样: 现在,我只在做4个子查询,但是必须有一种更清洁的方法。另外,如果您想提一个更好的数据库结构,我也很乐意为将来的数据库生产做准备

  • 问题内容: 我有两张表。我试图将下面的两个示例表与表1结合起来,两次引用表2。例如,如果我查看表1:第2组和成员7,则应在表2中查找ID,并提供以下输出: 表1 表2 有什么建议吗?谢谢 问题答案: SELECT Table_1.*, g.Name, m.Name FROM Table_1 INNER JOIN Table_2 AS g ON Table_1.Group=g.ID INNER JO