Общие > Базы данных
MySQL + постраничный вывод + локэйт
Wyclef:
При чем тут выше или нет, id - это, как я понимаю идентификатор записи, в первом запросе он нужен, чтобы определить значение sort_field.
а во втором:
select count(*) from tab where (sort_field >= $sort_field) AND id != $id
ладно, получили число записей у которых sort_field такой же или больше чем у записи c нашим id.
условно count(*)+1 - нужная запись... ну и?
Макс:
Wyclef
если ты делаешь сортировку например по дате (ORDER BY date DESC)
мускуль выводит сначало новые записи потом старые.
Если у нескольких записей дата одинакова, то они выводятся в порядке добавления в таблицу (которые раньше были добавлены будут выведены выше).
Если id - auto_increment сделать, то у записей с одинаковыми датами запись которая будет выше будет иметь ID меньше (потому как она раньше была добавлена в таблицу). У меня кстати ошибка в предыдущем посте, нужно
(sort_field = $sort_field AND id < $id)
Почему твой запрос может ошибку выдавать?
--- Цитировать ---select count(*) from tab where (sort_field >= $sort_field) AND id != $id
--- Конец цитаты ---
потому что если есть 100 записей с одинаковыми датами твой запрос всегда будет указывать что текущая запись среди них находится на последнем месте, что не является правдой
--- Цитировать --- ну и?
--- Конец цитаты ---
что "ну и ?" ? Не знаешь как определить страницу ?
Alexandr:
Очередной раз, Макс, пасиба.
Вроде алгоритм верный.
Wyclef:
Макс
какой-то ORDER изначально подразумевался вообще-то... я не счел нужным его упоминать.
--- Цитировать ---потому что если есть 100 записей с одинаковыми датами
--- Конец цитаты ---
DATE -> timestamp (какова вероятность сделать его одинаковым? :))
--- Цитировать ---Почему твой запрос может ошибку выдавать?
--- Конец цитаты ---
id - лично у меня он всегда auto_icrement
А если так:
select count(*) from tab where (sort_field >= $sort_field) AND id != $id order by sort_field desc, id desc
--- Цитировать ---Не знаешь как определить страницу?
--- Конец цитаты ---
сорри забыл "ну и?" удалить :)
Alexandr
Одна голова хорошо, а webscript - rulez!!! :)
З.Ы. эхх... хоть бы раз кто спасибо сказал :)))
Макс:
Wyclef
--- Цитировать ---select count(*) from tab where (sort_field >= $sort_field) AND id != $id order by sort_field desc, id desc
--- Конец цитаты ---
Пример.
есть таблица:
ID | date
1 | 15.03.2001
2 | 14.03.2001
3 | 14.03.2001
4 | 14.03.2001
Сортировка по date. Текущая запись ID = 2. Перед ней одна запись
А если твой запрос сделать, он выдаст что перед ней 3 записи.
Почему ? Потому что условию
(date >= \'14.03.2001\') AND id != 2
соответствуют 3 записи из данного множества
Навигация
Перейти к полной версии