MySQL поиск значения в двух столбцах и сумма третьего столбца

0

В моей таблице "game_info" у меня есть

ID | player_1 | player_2 | score
--------------------------------
1  | John     | Rick     | 100
2  | Joe      | John     |  80 
3  | Bob      | Rick     | 210

Я хочу суммировать общий балл для каждого игрока независимо от того, являются ли они player_1 или player_2, и заказывать по результату.
Я ожидаю:

Name | Score
------------
Rick | 310
Bob  | 210
John | 180
Joe  |  80

Я пытался подключиться к UNION, но я не могу понять это правильно.

Есть ли способ сделать это в sql или я должен перепроектировать мою таблицу?

Благодарю вас!

Теги:

2 ответа

3
Лучший ответ

Вы можете сделать это с помощью union all и group by:

select player, sum(score)
from ((select player1 as player, score from game_info
      ) union all
      (select player2 as player, score from game_info
      )
     ) p
group by player
order by sum(score) desc;
0
SELECT player, SUM(score)
FROM
(SELECT player_1 AS player, score
 FROM t
 UNION ALL
 SELECT player_2 as player, score
 FROM t) sub
GROUP BY player

Вы должны объединить результаты игрока 1 с результатами игрока 2, чтобы у вас был один результат с просто игроком и счетом. Конечно, баллы будут перечислены дважды в этом представлении, по одному для каждого игрока. В моем запросе результат называется sub. Основываясь на sub, вы можете группировать игроком и суммировать свои баллы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню