выбор топа в Php???
id,nickname,score. id - autoincrement, nickname - может повторяться сколько угодно, при этом будут разные score. Как сделать sql-запрос, чтобы выбирались, допустим 10 лучших по score? Я представляю это следующим образом:
Правильно или нет???
FROM table
GROUP BY nickname
ORDER BY 2 DESC
FROM table
GROUP BY nickname
ORDER BY 2 DESC
А лимитация количества записей??? Limit то все таки нужен наверное???
А лимитация количества записей??? Limit то все таки нужен наверное???
Нужен, так добавь :)
Нужен, так добавь :)
Ок, добавлю :D
Кстати, а почему ты убрал из моего варианта DISTINCT?? Ведь он вроде удаляет повторяющиеся записи. Или я не прав?
Ок, добавлю :D
Кстати, а почему ты убрал из моего варианта DISTINCT?? Ведь он вроде удаляет повторяющиеся записи. Или я не прав?
GROUP BY сгруппирует все записи по nickname, то есть объяденит все поля где nickname одинаков, а групповая функция SUM сложет все сгруппированые значение score.
GROUP BY сгруппирует все записи по nickname, то есть объяденит все поля где nickname одинаков, а групповая функция SUM сложет все сгруппированые значение score.
Т.е. если имеются записи на имя dodger, допустим:
|nickname|score|
|dodger |24 |
|sash |35 |
|dodger |44 |
то после этого запроса в выводе будет:
dodger 68
так? мне как раз нужно, чтобы была сделана выборка и взят максимальный результат.....поэтому, как мне кажется нужен distinct...или как выяснить максимальный результат еще?
http://dev.mysql.com/doc/mysql/ru/index.html
там можно скачать всю доку в архиве
а вообще это делается так:
SELECT nickname,max(score)
FROM table
GROUP BY nickname
ORDER BY 2 DESC
так? мне как раз нужно, чтобы была сделана выборка и взят максимальный результат.....поэтому, как мне кажется нужен distinct...или как выяснить максимальный результат еще?
Alone правильно сказал, испольуй MAX а не SUM. Да и RTFM.
Мой запрос был такой:
1 вася 1000
2 коля 90
3 саша 70
.........
27 юля 1
как???с помощью запроса или PHP???
Все, со всем разобрался. Осталось только одно. .допустим, что у меня записи лимитированы, т.ы. выводится 10 записей в таблице....а человек, который ищет себя в рейтинге находится на 27...как сделать так, чтобы выводились первые 10, а потом типа многоточие и только его 27 место????типа
1 вася 1000
2 коля 90
3 саша 70
.........
27 юля 1
как???с помощью запроса или PHP???
Я так думаю, чтобы определить место придется делать выборку всех и искать средсвами PHP.
Я тоже после нескольких попыток сделать все через запрос понял, что придется делать на PHP. Но, не могу понять одной вещи, после того как мы сделали запрос делаем следующее:
Понятное дело, что так мы создаем массив (или я не прав?) из данных, полученных в результате запроса.
В РНР есть такая функция как in_array(), которая ищет по шаблону необходимый элемент массива. Допустим in_array("dodger",$out) и выдают TRUE или FALSE соответственно. НО!!! Складывается такое ощущение, что в массиве присутствует только первая запись из запроса!!! Точнее, так оно и есть...но почему???
Если создать массив таким образом