【问题标题】:Using join, sum and group by in Mysql在 Mysql 中使用 join、sum 和 group by
【发布时间】:2020-04-28 07:42:44
【问题描述】:

首先我有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表中注册的user id也与users表中的id相关联,则users表中的reference code字段由references表中的“reference_user_id”字段绑定。

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
  • 最后一个reference_register_user_id 2 AND 3

【问题讨论】:

    标签: mysql database join group-by sum


    【解决方案1】:

    如果有人想看,我解决了问题,我在下面写的代码给出了我想要的输出

    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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      相关资源
      最近更新 更多