Выборка соседних записей с таблы зная id текущей

138
.
I'm the Cult of Personality...
Седня думал какбы решыть задачю не допуская велосипеда, но видемо неполучилось.
Робочий вариант, да ненрав. мне.
$nav = mysql_query("SELECT `id` FROM `test` WHERE ( 
`id` = (SELECT MAX(`id`) FROM `test`WHERE `id` <$id) 
OR `id` = (SELECT MIN(`id`) FROM `test` WHERE `id` >$id) 
)"); 
$l_nav = '« пред.'; $r_nav = 'след. »';
while($nav1 = mysql_fetch_array($nav))
if($nav1['id'] < $id) 
$l_nav = '<a href="?act=view&amp;id='.$nav1['id'].'">« пред.</a>'; 
else
$r_nav = '<a href="?act=view&amp;id='.$nav1['id'].'">след. »</a>';
echo $l_nav, $r_nav;
Может кто подкажет как решыть задачку, или даже даст свой вариант?
.
SELECT id FROM table WHERE id < ? ORDER BY id DESC LIMIT 1 // предыдущий
SELECT id FROM table WHERE id > ? ORDER BY id ASC LIMIT 1 // следующий
.
I'm the Cult of Personality...
L!MP, Ну эт понятно, именно одним запросом хотел.
.
BoGdAn, зачем?
.
I'm the Cult of Personality...
L!MP, Задача такова была. Лан. По твоему лутше полюбому, у мя запрос (аш самому страшно, какой) да ещё и цыкл...
.
Наверно можно еще так.
SELECT MAX(id) FROM table WHERE id < ? // предыдущий

SELECT MIN(id) FROM table WHERE id > ? // следующий
.
I'm the Cult of Personality...
L!MP, ну да, эти запросы и совмесщены в первом посте.
.
BoGdAn, хм, действительно
Всего: 8