SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 21.06.2010 16:33:51

ajk
Участник
Зарегистрирован: 21.06.2010
Сообщений: 3

Найти следующую запись после текущей

Есть таблица, типа, с картинками.
В ней есть сортировка:
KEY `photo_ratings` (`photo_ratings, photo_id`),
Выдаём в таблицу:
SELECT
. . .
WHERE photo_cat_id=12
GROUP BY photo_id
ORDER BY photo_ratings DESC,photo_id DESC LIMIT 0,12

Плучаем:
ratings id
5000 94
4000 339
4000 338
4000 91
3000 132
1501 728
1501 714
1501 702
1501 695
1501 694
1501 692
1501 651
Это правильно. Рейтинги одинаковые, значит, нужно идти по id, которое фактически даёт порядок по времени вложения.

Теперь я показываю конкретную фоту из списка. Тоже нормально.
А, вот, когда я начинаю выбирать следующую/предыдущую начинаются фокусы.
Нп, если стою на id=338, то выбирает следующую id = 94. и так далее:
SELECT photo_id FROM photo_show
WHERE (photo_ratings<='4000' OR photo_id<'339'wink
AND photo_cat_id=12
ORDER BY photo_ratings DESC,photo_id DESC LIMIT 1

Если вместо OR сделать AND, то такая же глюка будет в другом месте.

Как выбрать следующую? Другой индекс? Какой?

Это же страничка в и-нете, и я не могу создать р\вариант курсора и т.п. Т.е каждый запрос - последний

Спасибо! Александр.

Неактивен

 

#2 22.06.2010 17:26:54

ajk
Участник
Зарегистрирован: 21.06.2010
Сообщений: 3

Re: Найти следующую запись после текущей

А можно задать ключ как-то так?
KEY `photo_ratings` (`photo_ratings*10000+photo_id`)
Такой ключ будет работать, по-любому, правильно!

Неактивен

 

#3 22.06.2010 23:17:08

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Найти следующую запись после текущей

Хм, как-то странно потерялось Ваше изначальное сообщение у меня в почте sad
Заменять надо не просто AND на OR wink

SELECT photo_id FROM photo_show
WHERE (photo_ratings<4000) OR (photo_ratings = 4000 AND photo_id < 339)
AND photo_cat_id=12
ORDER BY photo_ratings,photo_id LIMIT 1

Неактивен

 

#4 23.06.2010 10:21:23

ajk
Участник
Зарегистрирован: 21.06.2010
Сообщений: 3

Re: Найти следующую запись после текущей

Большое спасибо!
Нужно больше отдыхать. Особенно летом. Такую глупость не допереть

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson