mysql - 在 Mysql 中使用 join、sum 和 group by

标签 mysql database join group-by sum

首先,我有 3 个表,表的名称是“users”、“references”和“operations”。

结构如下..

users
+----+------------+----------------+
| id | name       | referance_code |
+----+------------+----------------+
|  1 | Jack       | 11111111       |
|  2 | Rose       | 22222222       |
|  3 | Einstein   | 33333333       |
|  4 | Che        | 44444444       |
|  5 | Recep      | 55555555       |
+----+------------+----------------+

用户相互引用的中间表,
*如果在references表中注册的用户id也与users表中的id相关联,则users表中的reference code字段由references表中的“reference_user_id”字段绑定(bind)。
referances
+----+------------------+-------------------+
| id |register_user_id  | referance_user_id |
+----+------------------+-------------------+
|  1 | 2                | 11111111          |
|  2 | 3                | 11111111          |
|  3 | 4                | 22222222          |
|  4 | 5                | 33333333          |
|  5 | 6                | 44444444          |
+----+------------------+-------------------+

我最后一张交易表
transactions
+-----+--------------------+-------+-----------------------------+
| id  | amount   | user_id | type  | referance_register_user_id  |
+-----+----------+---------+-------+-----------------------------+
|  1  | +200      | 1       |  4    |          3                 |
|  2  | +200      | 1       |  8    |          2                 |
|  3  | -300      | 3       |  4    |          5                 |
|  4  | -400      | 4       |  4    |          3                 |
|  5  | -400      | 5       |  4    |          5                 |
|  6  | -500      | 1       |  6    |          3                 |
|  7  | -400      | 2       |  4    |          5                 |
|  8  | -300      | 3       |  4    |          5                 |
|  9  | -200      | 4       |  4    |          3                 |
|  10 | -400      | 5       |  3    |          5                 |
|  11 | -100      | 3       |  4    |          5                 |
|  12 | -300      | 2       |  4    |          5                 |
|  13 | -200      | 1       |  4    |          5                 |
|  14 | +300      | 1       |  4    |          2                 |
|  15 | +500      | 1       |  4    |          3                 |
+-----+-----------+---------+-------+----------------------------+

sql output
+-----------+--------+
| username  | amount |
+-----------+--------+
|  Rose     | 500    |
|  Einstein | 700    |
+-----------+--------+

我想为“Jack”用户写一个代码,首先连接到references表,然后用references表中的“register_user_id”连接到操作表并获取id,referenced_register_user,引用类型4和8,得到金额字段。

我希望输出是这样的
  • 所以你自己的user_id from user_id = 1
  • 类型 4 或 8
  • 最后引用_注册_用户_id 2 AND 3
  • 最佳答案

    万一有人想看到它,我解决了这个问题,我在下面写的代码给出了我想要的输出

    SELECT Sum(t.amount) AS amount, 
           r.register_user_id, 
           r.referance_user_id, 
           u.id          u_id, 
           u.username, 
           u.email, 
           t.amount, 
           t.user_id, 
           t.type, 
           t.referance_register_user_id 
    FROM   referances r 
           LEFT JOIN users u 
                  ON u.id = r.register_user_id 
           LEFT JOIN transactions t 
                  ON r.register_user_id = t.referance_register_user_id 
    WHERE  r.referance_user_id = '11111111' 
           AND user_id = '1' 
           AND ( t.type = 4 
                  OR t.type = 8 ) 
    GROUP  BY t.referance_register_user_id 
    ORDER  BY amount DESC 
    

    关于mysql - 在 Mysql 中使用 join、sum 和 group by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59685364/

    相关文章:

    mysql - 我应该使用关系数据库作为字典吗

    php - 如何在 php 7 中连接到 mongodb 数据库

    android - 将 secret 信息存储在 iPhone/Android 的数据库中

    MySQL JOIN 围绕子查询结果

    php - 计算按要求标记的项目以及另一个表中缺失或部分存在的项目

    mysql select查询(字典搜索)

    mysql - AWS EC2 - 当 Event_Scheduler = ON 时服务器重新启动时 MySQL 事件计划程序未启动

    mysql - 出现 1045 错误时,如何在 SQL 中导出运行查询的结果?

    SQL : FULL OUTER JOIN on null columns

    Java 线程,join() 花费太长时间?