[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выборка из таблицы, упорядочить
DooMka
Имеется база данных, пытаюсь создать запрос таким образом, дабы вытащить из таблицы mp3 данные и рассортировать их в порядке убывания по полю download с лимитом по этому-же полю в 30
$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

$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???

Спустя 2 минуты, 22 секунды (30.11.2011 - 20:36) DooMka написал(а):
да, int, стараюсь минимизировать запросы и использовать поля именно этого типа, так-как они более быстры в запросах

P.S. Извиняюсь, жесть туплю, тут всё верно. Этот запрос прекрасно сортирует поле download по убыванию и вытаскивает с лимитом в 30-ть полей. Всем спасибо. Данная темя для меня нова, из-за этого и возникает недопонимание того, что уже вроде как есть...

Спустя 4 минуты, 57 секунд (30.11.2011 - 20:40) Игорь_Vasinsky написал(а):
ни чё не понял biggrin.gif

Спустя 23 минуты, 47 секунд (30.11.2011 - 21:04) DooMka написал(а):
Столкнулся ещё с одной проблемой:

Вычисление рейтинга идёт по следующей схеме:

$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

Тому, кто посоветовал поставить тут запятую, можешь "дать в таблО" smile.gif Потому что правильно - это так, как у тебя уже было записано в запросе. Без запятой, просто через пробел.

А еще в Мускуле очень полезно ставить все имена полей и таблиц в обратные кавычки ` (это так же кнопка, где находится буква Ё).

Спустя 11 минут, 15 секунд (30.11.2011 - 21:19) DooMka написал(а):
Цитата (DooMka @ 30.11.2011 - 18:04)
Столкнулся ещё с одной проблемой:

Вычисление рейтинга идёт по следующей схеме:

$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);

С последним вопросом найти решение пока не получилось

Спустя 5 минут, 5 секунд (30.11.2011 - 21:24) Игорь_Vasinsky написал(а):
может и есть в SQL внутренние рычажку, не вкурсе - а так - надо было предусмотреть что будешь сортировку так делать и поле создать

может можно испльзовать и что то типа

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 такой гибкий biggrin.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.