首先,我有 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,得到金额字段。
我希望输出是这样的
最佳答案
万一有人想看到它,我解决了这个问题,我在下面写的代码给出了我想要的输出
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/