В настоящее время я работаю над сайтом футбола, и функция, которую я разрабатываю, проходит через историю, чтобы узнать, какой игрок (ы) набрал наибольшее количество голов каждый год.ORDER BY MAX (`field_name`) Использование GROUP BY
У меня есть рабочее решение, но думаю, что будет более простой и эффективный способ обойти его.
Вот несколько примеров данных:
-----------------------
year | name | goals
-----------------------
1 | player1 | 6
1 | player2 | 8
1 | player3 | 4
2 | player1 | 3
2 | player2 | 5
2 | player3 | 2
3 | player1 | 7
3 | player2 | 7
3 | player3 | 3
Используя следующий запрос, я могу получить часть данных я требую.
ВЫБОР
year
, MAX (goals
) КАКgoals
ОТtable
GROUP BY `года
------------
year | goals
------------
1 | 8
2 | 5
3 | 7
Извлечение правильное значение из name
колонны оказывается более трудным, хотя, как я того, чтобы использовать GROUP_CONCAT
в случае таких случаев, как год 3, где более одного name
равно максимальному значению goals
.
В настоящее время я использую два запроса, чтобы получить желаемый результат. Я все еще использую запрос сверху, но затем использую цикл PHP while для поиска каждый год отдельно.
Вот мой код:
$load_goals = $db->query("SELECT `year`, MAX(`goals`) AS `goals` FROM `table` GROUP BY `year` DESC);
while($goals = $load_goals->fetchObject())
{
$players = $db->prepare("SELECT `year`, GROUP_CONCAT(`name` ORDER BY `name`) AS `name`, `goals` FROM `table` WHERE `year` = :year AND `goals` = :goals");
}
Я попытался объединить два запроса в один, но безрезультатно, поэтому каких-либо указаний здесь была бы оценена.
Для уточнения это должно быть моим окончательным результатом. Обратите внимание, что произойдет в 3-м году, когда подано GROUP_CONCAT
.
------------------------------
year | name | goals
------------------------------
1 | player2 | 8
2 | player2 | 5
3 | player1,player2 | 7
Вы видите недостающую двойную кавычку ?? Синтаксическая раскраска должна дать вам подсказку! – RiggsFolly
Любые очевидные синтаксические ошибки здесь сводятся к тому, что я новичок на сайте и адаптируется к системам кода и котировок. У меня были ответы ниже, которые теперь решают мою проблему. Спасибо за ответ. –