Как реализовать случайный вывод из БД, с учетом рейтинга данных.

Статус
В этой теме нельзя размещать новые ответы.

dandandan

Мой дом здесь!
Регистрация
7 Авг 2008
Сообщения
1.036
Реакции
292
Необходимо выводить случайные данные поговорок из базы данных с учетом, рейтинга поговорок. Т.е. поговорки с более высоким рейтингом показываются чаще, чем с более низким. Может кто идейку подсказет, как такое реализовать. Просто случайные данные выбрать из БД могу запросто.
 
ORDER BY поле DESC
Хотя в принципе не понятно как может быть выборка случайной если необходимо учитывать какое-либо поле.
 
Хотя в принципе не понятно как может быть выборка случайной если необходимо учитывать какое-либо поле.
Думаю подразумевалось, что чем выше значение в поле, тем больше у него шанс выпасть.
Можно реализовать к примеру таким образом:


Но если поговорок много, то думаю будет лучше достать все, и из них уже выбрать нужное количество.
 
Если мало записей в базе данных то будет работать быстро, а если больше 1к, то будет грузить сервак.

P.S. пока писал ответ, уже ответили :)
 
select c1
from t1
where rating>FUNC(rand())*(rating_max-rating_min)
order by rating
limit 1

FUNC - подбери по вкусу, чтобы было не линейно.;)
 
select c1
where rating>FUNC(rand())*(rating_max-rating_min)
limit 1
Вот меня именно FUNC интересует .
Например, если рейтинг рассчитывается по 5-ти бальной шкале от 1 до 5. Нужно поговорку с рейтингом 1 показать 1 раз, с рейтином 2 - 2 раза, ... с рейтингом 5 - 5 раз.

Можно реализовать к примеру таким образом:

Не совсем понимаю как это будет работать. Т.е. Упорядочивает сначала случайно и выбирает по возрастанию ?
 
Например, если рейтинг рассчитывается по 5-ти бальной шкале от 1 до 5. Нужно поговорку с рейтингом 1 показать 1 раз, с рейтином 2 - 2 раза, ... с рейтингом 5 - 5 раз.
Ещё раз, только по русски и подробно.
Если я правильно понял, то чего хочешь ты мускулем не решить.
 
Т.е. нужно показывать случайную поговорку. Однако поговорка с более высоким рейтингом должна показываться чаще. чем поговорка с низким рейтингом. (Рейтинг выставляется голосованием) На странице показывается 1 поговорка за один раз.
Что-то вроде аналога рекламы от яндекса. Если чаще кликают на объявление - то чаще показывается это объявление.
 
Мускуль отдал тебе запрос и забыл - он не запоминает их.
Так-что учёт чаще/реже надо вести самому.
 
Мускуль отдал тебе запрос и забыл - он не запоминает их.
Так-что учёт чаще/реже надо вести самому.

проблема в том, что пока в голову не приходит такой алгоритм. :) Уже третий день думаю.
Получается, все сложно... в БД добавляю поле сколько раз показана поговорка... И необходимо каждый раз выполнять вычисления...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху