|
|
|
| Здравствуйте, у меня такой вопрос, есть таблица с полем rating, надо выводить данные из этой таблицы - выодить одну запись с сортировкой по полю raiting, но в таком вот виде:
1 место - 50% выводов
2 место - 20%
3 место - 10%
4 место - 8%
5 место - 6%
6 место - 3%
7 место - 2%
8 место - 1%
Т.е. вариант с ORDER BY RAND() LIMIT 1
Здесь не подходит, по сему вопрос: Можно ли как то задать правила выборки значений из БД MySQL на основании представленной выше таблицы? Если не тяжетло подтолкните на мысль.... | |
|
|
|
|
|
|
|
для: CURL
(19.10.2007 в 12:13)
| | >выводить одну запись с сортировкой по полю raiting
Не очень понятно - приведите структуру таблицы
>Т.е. вариант с ORDER BY RAND() LIMIT 1
Обычно используют вариант ORDER BY rating DESC | |
|
|
|
|
|
|
|
для: 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:32)
| | В общем я так понимаю придется создавать пользовательскую функцию. | |
|
|
|
|
|
|
|
для: CURL
(19.10.2007 в 12:32)
| | Погодите, у вас поле raiting текстовое? Сделайте его float - тогда сортировка будет правильной. | |
|
|
|
|
|
|
|
для: cheops
(19.10.2007 в 14:13)
| | оно float | |
|
|
|