Страница 1 из 1

Сортировка вместе с уникальностью MySQL

Добавлено: 27 янв 2013, 10:30
manticore
Как можно сначала отсортировать, а потом выбрать по уникальности значения?

Пытался сделать так:

Код: Выделить всё

SELECT `id` FROM `payments` GROUP BY `userid` ORDER BY `monets` DESC
Но тогда он берет не самые большие значения monets, т.к сначала идет выборка по уникальности, а потом сортировка.
А если поменять местами, то говорит что так невозможно. Так как это обойти?

Re: Сортировка вместе с уникальностью MySQL

Добавлено: 27 янв 2013, 10:48
Serge
По идее

Код: Выделить всё

SELECT `id`, MAX(`monets`) FROM `payments` GROUP BY `user_id`
выберет максимальное для каждого пользователя. Если это имелось в виду...

Re: Сортировка вместе с уникальностью MySQL

Добавлено: 27 янв 2013, 11:05
manticore
Serge
Не помогло, взял человека c определенным ID и с монетами 2002, хотя у игрока есть еще запись с монетами 5821.

Re: Сортировка вместе с уникальностью MySQL

Добавлено: 27 янв 2013, 12:49
manticore

Код: Выделить всё

SELECT `userid`,MAX( `monets`) FROM `payments` GROUP BY `userid` ORDER BY MAX( `monets`) DESC 
Но только как мне в PHP взять число MAX(`monets`)?

Вот так работает с обычным полем:

Код: Выделить всё

$user['userid']
А как для максимального числа, я не знаю. Пробовал так, но не работает:

Код: Выделить всё

$user['MAX(monets)']

Re: Сортировка вместе с уникальностью MySQL

Добавлено: 28 янв 2013, 10:34
Serge
1) Загнать запрос в phpmyadmin и посмотреть правильное название возвращаемого поля
2) Вывести весь массив при помощи print_r
3) При выборке сделать псевдоним (AS max_monets)

Re: Сортировка вместе с уникальностью MySQL

Добавлено: 28 янв 2013, 14:23
manticore
Serge
Просто вывел с помощью print_r и понял что правильным будет так:

Код: Выделить всё

$user['MAX(`monets`)']
Спасибо вам ;)