постраничный вывод, нахождение страницы с опред. сообщением

berkut

Новичок
постраничный вывод, нахождение страницы с опред. сообщением

есть каталог ссылок. хочу прикрутить такую весчь:
поиск страницы, на которой находится определённая ссылка. Т.е. из ид сообщения со ссылкой, нужно вычислить на какой "странице" оно находится. Вся проблема в том, что сортировка может вестись бо дате, по описанию и по коментариям, как в прямом, так и в обратном порядке.
Суть вопроса: как подсчитать порядковый номер сообщения с определённым ID при выводе с определённым режимом сортировки?
Если сортировка велась-бы только по дате, то можно вычислить "номер" сообщения запросом
Код:
SELECT COUNT(*) FROM tbl WHERE id < $current_message_id
при сортировки по возрастанию, а при сорт. по убыванию
Код:
SELECT COUNT(*) FROM tbl WHERE id > $current_message_id
-~{}~ 14.01.05 12:09:

вопрос скорее в форум по mysql, но не буду начинать новую тему
коректно-ли будет работать такой запрос для моей задачи
Код:
SELECT COUNT(*) FROM tbl WHERE id < $current_message_id 
AND ctg = 1 
ORDER BY IF(dop3=0, dop2/1, dop2/dop3) DESC, description DESC
MySQL сначала сортирует, а потом считает в соответствии с условием WHERE кол-во записей? Всё происходит именно в этом порядке?
 

Profic

just Profic (PHP5 BetaTeam)
нет, грубо говоря mysql выполняет части запроса в такой последовательности:
where -> fields -> order
 

untied

Сдвинутый новичок
Товарищ Беркут, я бы не советовал тебе сортировать сообщения по критерию "идентификатор больше (меньше) искомого". Это чисто случайно происходит, что MySQL автоматом увеличивает идентификатор каждого нового сообщения на 1 (понятно, что не совсем случайно, но полагаться на это обстоятельство нельзя!).

Если есть дата нужного сообщения, то можно сделать так:

SELECT COUNT(*) FROM m_table WHERE m_date < m_curr

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