Общие > Базы данных

MySQL + постраничный вывод + локэйт

<< < (3/4) > >>

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 записи из данного множества

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии