$resultdw = mysql_query("SELECT id,name,putdomp3,download,reiting,q_vote FROM mp3 ORDER BY download DESC LIMIT 30",$db);
Подсказали использовать функцию DESCENDING, для рассортировки по убывания, но как применять её ума не приложу.
Опять-же повторюсь целью является вытащить 30 песен из базы и выстроить этот список по убыванию поля download. Поле download каждой песни содержит количество её скачиваний.
Спустя 42 минуты, 13 секунд (30.11.2011 - 20:19) Игорь_Vasinsky написал(а):
так вроде верно всё.
Спустя 6 минут, 58 секунд (30.11.2011 - 20:26) sergeiss написал(а):
Лимит - он не по полю, а по количеству. А вообще Игорь_Vasinsky прав - запрос как раз и должен отсортировать по указанному полю в порядке убывания количества, т.е. что ты и хочешь.
Спустя 1 минута, 6 секунд (30.11.2011 - 20:27) Игорь_Vasinsky написал(а):
DooMka
так он не сортирует или вообще ошибки?
так он не сортирует или вообще ошибки?
Спустя 3 минуты, 50 секунд (30.11.2011 - 20:31) DooMka написал(а):
Там всё действительно верно, но как сперва рассортировать информацию по убывания поля download, а потом вытащить всё это с лимитом в 30-ть записей. У меня не получается именно рассортировать. Либо как вариант придётся вытаскивать все данные * , затем сортировать поле download по убыванию, и ограничить лимитом в 30-ть записей. С этой проблемой я столкнулся впервые, но уже понимаю, что если делать всё оптимизировано, без кучи запросов, то это скажется положительно на быстродействии и уменьшит нагрузку на php
P.S. запрос написанный мной выше не сортирует по полю download
Этот запрос без сортировки, посоветовали использовать код
использовать у меня его не вышло, в гугле пока ответа не нашёл, если найду, выложу решение этой ситуации
Извиняюсь, жесть туплю, тут всё верно. Этот запрос прекрасно сортирует поле download по убыванию и вытаскивает с лимитом в 30-ть полей. Всем спасибо. Данная темя для меня нова, из-за этого и возникает недопонимание того, что уже вроде как есть...
P.S. запрос написанный мной выше не сортирует по полю download
$resultdw = mysql_query("SELECT id,name,putdomp3,download,reiting,q_vote FROM mp3 ORDER BY download DESC LIMIT 30",$db);
Этот запрос без сортировки, посоветовали использовать код
ORDER BY "название поля", DESCENDING
использовать у меня его не вышло, в гугле пока ответа не нашёл, если найду, выложу решение этой ситуации
Извиняюсь, жесть туплю, тут всё верно. Этот запрос прекрасно сортирует поле download по убыванию и вытаскивает с лимитом в 30-ть полей. Всем спасибо. Данная темя для меня нова, из-за этого и возникает недопонимание того, что уже вроде как есть...
Спустя 2 минуты, 32 секунды (30.11.2011 - 20:33) Игорь_Vasinsky написал(а):
DooMka
у тя поле download INT???
у тя поле download INT???
Спустя 2 минуты, 22 секунды (30.11.2011 - 20:36) DooMka написал(а):
да, int, стараюсь минимизировать запросы и использовать поля именно этого типа, так-как они более быстры в запросах
P.S. Извиняюсь, жесть туплю, тут всё верно. Этот запрос прекрасно сортирует поле download по убыванию и вытаскивает с лимитом в 30-ть полей. Всем спасибо. Данная темя для меня нова, из-за этого и возникает недопонимание того, что уже вроде как есть...
P.S. Извиняюсь, жесть туплю, тут всё верно. Этот запрос прекрасно сортирует поле download по убыванию и вытаскивает с лимитом в 30-ть полей. Всем спасибо. Данная темя для меня нова, из-за этого и возникает недопонимание того, что уже вроде как есть...
Спустя 4 минуты, 57 секунд (30.11.2011 - 20:40) Игорь_Vasinsky написал(а):
ни чё не понял

Спустя 23 минуты, 47 секунд (30.11.2011 - 21:04) DooMka написал(а):
Столкнулся ещё с одной проблемой:
Вычисление рейтинга идёт по следующей схеме:
А именно делим общее количество очков на количество голосовавших человек. Выборку из базы нужно сделать именно таким способом, но возможно-ли сделать это во время самого запроса:
разделить поле download на поле q_vote - в соответствии с этим рассортировать и вывести список по убыванию результатов получаемых из деления поля download на поле q_vote
Вычисление рейтинга идёт по следующей схеме:
$reting23 = $myrowdw['reiting']/$myrowdw['q_vote'];
$reting23 = intval($reting23);
А именно делим общее количество очков на количество голосовавших человек. Выборку из базы нужно сделать именно таким способом, но возможно-ли сделать это во время самого запроса:
разделить поле download на поле q_vote - в соответствии с этим рассортировать и вывести список по убыванию результатов получаемых из деления поля download на поле q_vote
$resultdw = mysql_query("SELECT id,name,putdomp3,download,reiting,q_vote FROM mp3 ORDER BY download/q_vote DESC LIMIT 30",$db);
Спустя 3 минуты, 34 секунды (30.11.2011 - 21:08) sergeiss написал(а):
Цитата (DooMka @ 30.11.2011 - 21:31) |
Этот запрос без сортировки, посоветовали использовать код ORDER BY "название поля", DESCENDING |
Тому, кто посоветовал поставить тут запятую, можешь "дать в таблО"

А еще в Мускуле очень полезно ставить все имена полей и таблиц в обратные кавычки ` (это так же кнопка, где находится буква Ё).
Спустя 11 минут, 15 секунд (30.11.2011 - 21:19) DooMka написал(а):
Цитата (DooMka @ 30.11.2011 - 18:04) |
Столкнулся ещё с одной проблемой: Вычисление рейтинга идёт по следующей схеме: $reting23 = $myrowdw['reiting']/$myrowdw['q_vote']; А именно делим общее количество очков на количество голосовавших человек. Выборку из базы нужно сделать именно таким способом, но возможно-ли сделать это во время самого запроса: разделить поле download на поле q_vote - в соответствии с этим рассортировать и вывести список по убыванию результатов получаемых из деления поля download на поле q_vote $resultdw = mysql_query("SELECT id,name,putdomp3,download,reiting,q_vote FROM mp3 ORDER BY download/q_vote DESC LIMIT 30",$db); |
С последним вопросом найти решение пока не получилось
Спустя 5 минут, 5 секунд (30.11.2011 - 21:24) Игорь_Vasinsky написал(а):
может и есть в SQL внутренние рычажку, не вкурсе - а так - надо было предусмотреть что будешь сортировку так делать и поле создать
может можно испльзовать и что то типа
reiting/q_vote as rating и потом ORDER BY `rating`
но не факт, и выглядит подозрительно
и к стати
может можно испльзовать и что то типа
reiting/q_vote as rating и потом ORDER BY `rating`
но не факт, и выглядит подозрительно
и к стати
Цитата |
$reting23 = intval($reting23); |
достаточно
$reting23 = (int)$reting23;
Спустя 12 секунд (30.11.2011 - 21:24) DooMka написал(а):
$resultdw = mysql_query("SELECT id,name,putdomp3,download,reiting,q_vote FROM mp3 ORDER BY download/q_vote DESC LIMIT 30",$db);
ошибся с полями - элементарная торопливасть
$reting23 = $myrowdw['reiting']/$myrowdw['q_vote'];
$reting23 = intval($reting23);
правильный вариант деления данных в запросе
$resultdw = mysql_query("SELECT id,name,putdomp3,download,reiting,q_vote FROM mp3 ORDER BY reiting/q_vote DESC LIMIT 30",$db);
Спустя 1 минута, 7 секунд (30.11.2011 - 21:25) Игорь_Vasinsky написал(а):
век живи - век учись, я даже и не предполагал что SQL такой гибкий
