Я не уверены, что если этот вопрос не запрошен, но я не знаю, как слово лучше :)PDO Возврат высокое целое значение и не повторяющиеся записи
У меня есть таблица с результатами игр. Мне нужно вернуть 10 лучших результатов (для лидеров), но мои результаты должны вернуть самую высокую игру за игрока и не реплицировать игрока (так что я ищу наивысший балл каждого игрока и на основании того, что 10 лучших игроков, а не сказать если я первый и третий на баллы, чтобы показать мне дважды).
SQL, я использую в данный момент:
SELECT
`games`.`score`,
CONCAT(`users`.`full_name`) AS `name`,
`users`.`facebook_id`
FROM
`games`,
`users`
WHERE
`games`.`user_id`=`users`.`id`
AND `users`.`id` IN ('user ids goes here')
AND `games`.`status`=2
ORDER BY
`games`.`score` DESC
LIMIT 10";
Может ли это быть сделано с помощью одного запроса или было бы лучше работать на возвращаемом массиве и создать мои желаемые результаты оттуда?
UPDATE:
Чтобы лучше проиллюстрировать, что мы имеем следующие результаты:
Jack - 300 points
Jill - 280 points
Gareth - 250 points
Jack - 240 points (this is the same jack)
Peter - 230 points
....
я хочу вернуться из всех игр, топ 10 игроков, основываясь на их наибольшее количество очков, так не neccesarily 10 результатов, но я ищу результат, который будет затем возвращать следующее:
Jack - 300 points
Jill - 280 points
Gareth - 250 points
Peter - 230 points
Так 2-й Джек удален, потому что он уже включен в список только с более высоким счетом.
Я надеюсь, что это помогает :)
Я не понимаю ваш вопрос; есть ли у вас небольшой пример данных и ожидаемого результата? –
Что-то с 'GROUP BY users.id' и' MAX (games.score) '? Возможно, в зависимости от вашего сервера базы данных. – CD001
... на самом деле -^это не сработает, так как это будет ** только ** вернуть лучший результат, а не топ 10. Может понадобиться суб-запрос, но он эффективно действует как другой запрос к базе данных, так что, если вы «Собираюсь построить хранимую процедуру, накладные расходы, вероятно, меньше, чтобы просто извлекать результаты из базы данных и сортировать ее в приложении. – CD001