У меня есть таблица, в которой хранится рейтинг онлайн-игры. Эта таблица (Игроки) имеет 4 столбца (Player_ID, Player_Name, Current_ELO и Player_Status). Я также хочу показать выигранные / проигранные игры, но эта информация находится в таблице повторов, в которой по одной строке на каждую игру. Я могу легко подсчитать количество выигранных или проигранных игр с помощью функции count (*):
select Winner, count(*) from Replays group by Winner;
select Loser, count(*) from Replays group by Loser;
Однако я не могу найти способ объединить обе таблицы, поэтому мой конечный результат выглядит примерно так:
+-------------+-------------+-----------+------------+
| Player_Name | Current_ELO | Won games | Lost games |
+-------------+-------------+-----------+------------+
| John | 1035 | 5 | 3 |
+-------------+-------------+-----------+------------+
Мое лучшее предположение - это, однако, возвращает слишком много результатов, потому что я не могу сгруппировать "count ()" по Победителю / Проигравшему индивидуально для каждого счета:
select Player_Name, Current_ELO, Player_Status, count(Winner_Replays.Winner), count(Loser_Replays.Loser) from Players
inner join Replays as Winner_Replays on Winner_Replays.Winner = Players.Player_Name
inner join Replays as Loser_Replays on Loser_Replays.Loser = Players.Player_Name
group by Winner_Replays.Winner order by Current_ELO desc;
В идеале, так как некоторые у игроков может быть 0 побед или 0 поражений, я хотел бы, чтобы это возвращало 0 для тех пользователей, если это вообще возможно. Спасибо!