Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сортировка данных в таблице
 
 автор: CURL   (19.10.2007 в 12:13)   письмо автору
 
 

Здравствуйте, у меня такой вопрос, есть таблица с полем rating, надо выводить данные из этой таблицы - выодить одну запись с сортировкой по полю raiting, но в таком вот виде:
1 место - 50% выводов
2 место - 20%
3 место - 10%
4 место - 8%
5 место - 6%
6 место - 3%
7 место - 2%
8 место - 1%

Т.е. вариант с ORDER BY RAND() LIMIT 1
Здесь не подходит, по сему вопрос: Можно ли как то задать правила выборки значений из БД MySQL на основании представленной выше таблицы? Если не тяжетло подтолкните на мысль....

   
 
 автор: cheops   (19.10.2007 в 12:17)   письмо автору
 
   для: CURL   (19.10.2007 в 12:13)
 

>выводить одну запись с сортировкой по полю raiting
Не очень понятно - приведите структуру таблицы

>Т.е. вариант с ORDER BY RAND() LIMIT 1
Обычно используют вариант ORDER BY rating DESC

   
 
 автор: CURL   (19.10.2007 в 12:32)   письмо автору
 
   для: cheops   (19.10.2007 в 12:17)
 

Да это я понимаю, мне нужно настроить вывод данных из таблицы таким образом:
Сначала отсоритровать по полю raiting, потом выводить одну строку из БД, причем не рандомно, а в соотвтетствии со схемой, которую я представил выше.....

Н-р, сортировка по полю raiting, выдала таие вот результаты

id | raiting
1 4.56
2 3.90
3 3,78
4 3.21
5 3.01
6 2.97
7 2,67
8 2.21

Дальше надо выдать этот результат пользователю, но не по позиции 1,2,3 и не рандомно, а в соответствии с правилом: на ту запись, которая находится на 1 месте будет приходиться 50% от всей выдачи, на ту запись которая на 2ом месте - 20% всей выдачи и тд....
Т.Е. запись с большим значением рейтинга, должна показываться чаще (половина всех показоа юзерам)
Если в таблице встречаются одинаковые значения поля raiting, то показы делятся между ними пополам.....
Это надо сделать в одном SQL запросе.... Такое возможно вообще?

   
 
 автор: CURL   (19.10.2007 в 12:54)   письмо автору
 
   для: CURL   (19.10.2007 в 12:32)
 

В общем я так понимаю придется создавать пользовательскую функцию.

   
 
 автор: cheops   (19.10.2007 в 14:13)   письмо автору
 
   для: CURL   (19.10.2007 в 12:32)
 

Погодите, у вас поле raiting текстовое? Сделайте его float - тогда сортировка будет правильной.

   
 
 автор: CURL   (19.10.2007 в 22:58)   письмо автору
 
   для: cheops   (19.10.2007 в 14:13)
 

оно float

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования