[MySQL] Быстро узнать порядковый номер данной строки среди удовлетворя
В форумах, например - как определяется, что какой-то пост находится на конкретной странице треда?
Обычно через задницу.
зы
можно, например, заметить, что в этом форуме - это работает неправильно.
А самому посмотреть исходники форума?
В нашем форуме это вроде бы делается относительно нормально?
Так неужели никак не сделать это, не меняя существующей структуры данных, кроме как SELECT * WHERE xxx считать ещё одной таблицей, прикручивать к нему свои id и смотреть уже в этой новой таблице номер нужной строки?
select * from `posts` by order date asc limit ($page_number-1)*($post_per_page$page_number)*($post_per_page);
В форуме AFAIK сначала вытягиваются все пары ключ-значение, и уже по ним скриптом выбирается что показывать.
говорят это получается даже быстрее LIMIT.
Особенно если у тебя помножено несколько таблиц и сделан сложный сорт.
хз. Так сразу не могу ответить ... возможно придется клепать еще одну таблицу в которой будет храниться необходимая информация для получения результата.
Если ты не заметил - тут речь о противоположно задаче - надо узнать не какие записи попадают на данную страницу, а на какую страницу попадает данная запись.
Похоже, легче поменять структуру данных...
SELECT COUNT(*) FROM Posts WHERE Posts.Id < @TargetId AND (проверка на принадлежность данной странице)
Всё гениальное просто...
![](/images/graemlins/grin.gif)
![](/images/graemlins/wink.gif)
Кроме тогоь, разве не получится к тому запросу добавить SORT BY id?
?
тогда все ок.
![](/images/graemlins/smile.gif)
![](/images/graemlins/blush.gif)
Честно говоря, я впервые стал с ним работать пару недель назад
![](/images/graemlins/blush.gif)
![](/images/graemlins/blush.gif)
есть подозрение, что это делается одним селектом - а как?делается. Уже написали?
Да - в предыдущих постах
Оставить комментарий
kruzer25
Есть таблица, в ней куча строк... надо узнать, какой порядковый номер будет у строки с данным ID в под-таблице всех строк, удовлетворяющих данному условию... есть подозрение, что это делается одним селектом - а как?