order by RAND() и постраничный вывод

malaya_mc

Новичок
order by RAND() и постраничный вывод

День добрый

Есть каталог баров. Нужно выводить их в случайном порядке по 10 штук на страницу.
Если использовать order by RAND() и limit то при переходе на вторую страницу мы не получим следующие 10 баров, а мы получим новые 10 баров в кот. может быть один или несколько из уже показаных.

Получается задача вида:
Когда пользователь заходит на бары, надо один раз отсортировать в случайном порядке, а затем просто отдавать по 10 штук.

Есть ли какой оптимальный вариант решения это задачи?
Писать в сессию или создавать временную таблицу это понятно. Меня интересует более красивое решение этой проблемы, ведь наверняка это делалось уже и не раз.

Спасибо
 

Фанат

oncle terrible
Команда форума
что за бредовая идея выводить список в случайном порядке?!
если выводятся 10 случайных баров, то этому списку ПО ОПРЕДЕЛЕНИЮ не нужна постраничная разбивка!
 

Фанат

oncle terrible
Команда форума
как всегда, кидаемся решать задачу отключив мозг
 

440hz

php.ru
у меня в свое время была задача для разных страниц показывать разную сортировку одной таблицы с постраничным выводом.

пришлось так извращаться и делать несколько полей по которым проходила сортировка и раз в сутки прогонять скриптом апдейт для новых записей, а вернее дл сех сразу.

бред, но заказчик хотел именно этого. пришлось извратиться.
 

malaya_mc

Новичок
Спасибо за ответ, только перечитайте вопрос заново. Там нигде не сказано про оценить на предмет бредовости задачу.

Есть заказчик есть задача. Он хочет чтоб при нажатии на ссылку "бары", последние выводились в случайном порядке. Поскольку это каталог и их там много то показываем по 10 штук на страницу.

Ерудна еще в том, что если пользователь уйдет в другое место на сайте и через врямя опять вернется в бары, то бары должны выводится уже в новом порядке.

Отаке.
 

Фанат

oncle terrible
Команда форума
разная сортировка для одной таблицы - не бред, а рядовая задача.
рекомендую посмотреть хотя бы этот форум.
никаких извращений для этого не требуется.

и, в любом случае, за отмазку не канает.
я удивляюсь вообще, что комментариев не пишут "вот мы в молодости на овощной базе..." увидев слово "база". Логика та же самая абсолютно - увидел знакомое слово и почесал. воспоминания старины
 

malaya_mc

Новичок
Искал по поиску - не нашел чего то подходящего.

Прийдется решать некрасиво.
 

antson

Новичок
Партнер клуба
Автор оригинала: malaya_mc
Искал по поиску - не нашел чего то подходящего.

Прийдется решать некрасиво.
Предварительно не мешало еще раз прочитать в мане про функцию rand()
Почемуто, все забывают, что все реализации рандомов построены на датчиках псевдослучайных чисел.
что это значит. у функции явно или не явно бывает инициализатор последовательности.

попробуй на базе с N записями прогнать к примеру
select rand(20) from table

сколько не запускай - последовательность одна и таже.
так как мы инициализируем ее константой.

примечание. неявная инициализация ДСЧ обычно выполняется от микротайма, что и дает впечатление полной случайности .

Дальше надеюсь как сохранять параметр между страницами знаешь сам ;)
 
Сверху