Использование объединения, суммирования и группировки в Mysql - PullRequest
0 голосов
/ 10 января 2020

Прежде всего, у меня есть 3 таблицы. Название таблиц: «пользователи», «ссылки» и «операции».

Структура выглядит следующим образом.

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

an промежуточная таблица, в которой пользователи ссылаются друг на друга, * Поле ссылочного кода в таблице пользователей ограничено полем "referance_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    |
+-----------+--------+

Я хотел бы написать код для пользователя "Джек", сначала подключитесь к таблице ссылок, затем подключитесь к операциям таблицу с "register_user_id" из таблицы ссылок и получить идентификатор, referenced_register_user, ссылки типов 4 и 8, и получить поле суммы.

Я хочу, чтобы вывод был таким

  • Итак, ваш собственный user_id от user_id = 1
  • type 4 OR 8
  • last referance_register_user_id 2 И 3

1 Ответ

0 голосов
/ 12 января 2020

Если кто-то захочет это увидеть, я решил проблему, и код, который я написал ниже, дает желаемый результат

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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...