powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбрать следующую запись не по primary
8 сообщений из 8, страница 1 из 1
Выбрать следующую запись не по primary
    #39181031
ysmhypno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pid int(1) UNSIGNED
cid int(11) UNSIGNED
sort int(11) UNSIGNED

Зная только pid и cid, как выбрать из БД следующую и предыдущую запись, относительно известной, но не по pic или cid, а по sort?

Например
SELECT * FROM database WHERE pid=$pid AND cid=$cid AND sort>(что тут должно быть?) ORDER BY sort DESC LIMIT 1
...
Рейтинг: 0 / 0
Выбрать следующую запись не по primary
    #39181032
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ysmhypnopid int(1) UNSIGNED
cid int(11) UNSIGNED
sort int(11) UNSIGNED

Зная только pid и cid, как выбрать из БД следующую и предыдущую запись, относительно известной, но не по pic или cid, а по sort?

Например
SELECT * FROM database WHERE pid=$pid AND cid=$cid AND sort>(что тут должно быть?) ORDER BY sort DESC LIMIT 1


в известно записи есть известной СОРТ.
вот его и поставьте. два запроса, отдельно для следуюшей,
отдельно для предыдушей... ну или УНИОН.
...
Рейтинг: 0 / 0
Выбрать следующую запись не по primary
    #39181033
ysmhypno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Я примерно и сам это понял. Интересно как бы это сделать на практике? В смысле - мой sql не самый лучший.
...
Рейтинг: 0 / 0
Выбрать следующую запись не по primary
    #39181039
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ysmhypnoСпасибо. Я примерно и сам это понял. Интересно как бы это сделать на практике? В смысле - мой sql не самый лучший.

так вы уже почти все сделали

Код: sql
1.
2.
3.
SELECT * FROM database WHERE pid=$pid AND cid=$cid AND sort<$sid ORDER BY sort DESC LIMIT 1

SELECT * FROM database WHERE pid=$pid AND cid=$cid AND sort>$sid ORDER BY sort      LIMIT 1
...
Рейтинг: 0 / 0
Выбрать следующую запись не по primary
    #39181386
ysmhypno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, но $sort то я не знаю ДО того, пока не обращусь к записи.
Как я понимаю, нужно сначала выбрать известную запись по pid и cid, а потом сделать новый запрос, относительно sort из первого запроса.

SELECT * FROM catalog_links WHERE sort>(SELECT MAX(sort) FROM catalog_links WHERE pid=$pid AND cid=$id) ORDER BY sort LIMIT 1

Попробовал так, но возвращает пустую строку.
...
Рейтинг: 0 / 0
Выбрать следующую запись не по primary
    #39181395
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
SELECT * FROM database WHERE pid=$pid AND cid=$cid AND sort<$sid ORDER BY sort DESC LIMIT 1

вам не нужен здесь sort, выбросьте
ORDER BY sort DESC (и без DESC) LIMIT 1 даст вам то что надо - следующую и предыдущую записи относительно известных pid,sid
...
Рейтинг: 0 / 0
Выбрать следующую запись не по primary
    #39181434
ysmhypno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может я что-то не так сделал:
SELECT * FROM catalog_links WHERE pid =3 AND cid =861 ORDER BY sort LIMIT 1

Возвращает как раз именно эту запись...
...
Рейтинг: 0 / 0
Выбрать следующую запись не по primary
    #39181447
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если вам надо найти следующее и предыдущее уже без привязки к pid, sid - то ваш вариант правильный
SELECT * FROM catalog_links WHERE sort>(SELECT MAX(sort) FROM catalog_links WHERE pid=$pid AND cid=$id) ORDER BY sort LIMIT 1
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбрать следующую запись не по primary
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]