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

malaya_mc

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

День добрый

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

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

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

Спасибо
 
что за бредовая идея выводить список в случайном порядке?!
если выводятся 10 случайных баров, то этому списку ПО ОПРЕДЕЛЕНИЮ не нужна постраничная разбивка!
 
как всегда, кидаемся решать задачу отключив мозг
 
у меня в свое время была задача для разных страниц показывать разную сортировку одной таблицы с постраничным выводом.

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

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

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

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

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

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

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

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

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

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

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

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