Prolix
Новичок
Выборка предыдущей и следующей записи
Здравствуйте!
Имеется таблица records, в которой сортировка производится по флажку "важности" и символьному значению. Например:
-----------------------------------
ID | title | importance
-----------------------------------
1 - C - 0
2 - A - 0
3 - D - 1
4 - B - 0
ID - стандартное поле auto_increment. importance = 1 или 0.
Когда скрипт отображает определенную запись, например, "select * from records where ID=2" (запись A), неким запросом нужно отображать ID и заголовок записей, которые следуют до и после этой записи, однако сортировка производится не по ID, а по "importance DESC, title ASC". Т.е. предыдущая по отношению к A будет D, а следующая - B. Если помечена запись D, то предыдущей не будет, а следующая будет A.
Самым простым решением, конечно же, является проход по всем записям и выбор двух нужных. Однако этот вариант не годится, ибо кол-во записей может быть очень большим, а запрос должен быть маскимально быстрым. Это могут быть также два быстрых запроса, если необходимо (как если бы двумя запросами выбирать записи по ID).
Поиск по форуму я делал, но есть только похожая тема с данным вопросом... там обсуждается, как выбрать пред./след. запись по ID, насколько я понимаю. Но тут вопрос другой. Может быть, у кого-то есть какие-либо идеи по этому поводу... спасибо.
Здравствуйте!
Имеется таблица records, в которой сортировка производится по флажку "важности" и символьному значению. Например:
-----------------------------------
ID | title | importance
-----------------------------------
1 - C - 0
2 - A - 0
3 - D - 1
4 - B - 0
ID - стандартное поле auto_increment. importance = 1 или 0.
Когда скрипт отображает определенную запись, например, "select * from records where ID=2" (запись A), неким запросом нужно отображать ID и заголовок записей, которые следуют до и после этой записи, однако сортировка производится не по ID, а по "importance DESC, title ASC". Т.е. предыдущая по отношению к A будет D, а следующая - B. Если помечена запись D, то предыдущей не будет, а следующая будет A.
Самым простым решением, конечно же, является проход по всем записям и выбор двух нужных. Однако этот вариант не годится, ибо кол-во записей может быть очень большим, а запрос должен быть маскимально быстрым. Это могут быть также два быстрых запроса, если необходимо (как если бы двумя запросами выбирать записи по ID).
Поиск по форуму я делал, но есть только похожая тема с данным вопросом... там обсуждается, как выбрать пред./след. запись по ID, насколько я понимаю. Но тут вопрос другой. Может быть, у кого-то есть какие-либо идеи по этому поводу... спасибо.