Объединить 3 таблицы в сложном запросе
Привет всем. У меня есть три таблицы: games
, active\_user_games
, balance
.
games
+------+---------+
| id | title |
+------+---------+
| 1 | my-game |
+------+---------+
| 2 | the are |
+----------------+
active\_user_game
+------+-----------+--------------+
| id | user_id | game_id |
+------+-----------+--------------+
| 1 | 1 | 1 |
+------+-----------+--------------+
| 2 | 2 | 1 |
+------------------+--------------+
| 3 | 3 | 2 |
+------+-----------+--------------+
| 4 | 4 | 2 |
+------------------+--------------+
balance
+------+-----------+--------------+------------+
| id | user_id | item_id | summ |
+------+-----------+--------------+------------+
| 1 | 1 | 1 | 1000 |
+------+-----------+--------------+------------+
| 2 | 2 | 1 | 1000 |
+------------------+--------------+------------+
| 3 | 3 | 2 | 2000 |
+------+-----------+--------------+------------+
| 4 | 4 | 2 | 2000 |
+------------------+--------------+------------+
Мне нужно вывести все записи из таблицы games и добавить 2 столбца данных к каждой записи, которые вычисляются по данным из двух остальных таблиц. А именно мне нужно вывести количество участников из таблицы active\_user_game
к конкретной игре функцией count()
и сумму платежей этих участников из таблицы balance
функцией sum(balance.summ)
.
Я делаю такой запрос:
SELECT g.id, g.title, au.game_id, au.id, b.id, b.user_id, COUNT(au.game_id) AS users, SUM(b.summ) AS bank
FROM games AS g
JOIN active_user_game AS au ON au.game_id = g.id
JOIN balance AS b ON b.item_id = g.id
WHERE g.private = 0 AND g.closed = 0 AND b.type IN(5,6)
GROUP BY g.id
ORDER BY g.vip DESC, g.benefit DESC
Но так как в разных таблицах разное количество записей, он выводит users и bank с неправильными цифрами, помогите решить эту задачу. Спасибо.