trent
Developer
Взять id следующей и предыдущей записи
есть таблица:
test
---------
id int(10),
category_id int(10),
number double (9,5),
created timestamp(14),
primary key id
select * from test where category_id = x order by number desc, created
делаю из нее выборку 10 записей c limit получаю список все нормально
теперь вопрос: переходим на эту запись и берем данные из test по id, какие есть варианты это реализовать, price может быть одинаков
на данный момент придумал такую схему
делаю insert select в другую таблицу при вставке сортирую по price
test2
-----------
category_id int(10),
position int(10) auto_increment,
test_id int(10),
primary key (category_id,position)
список беру таким образом
[sql]select t.* from from test2 t1, test t where category_id =x order by t1.position limit x,y[/sql]
а саму запись таким образом
[sql]select t.*,t2.test_id as prev_id, t3.test_id as next_id from test2 t1, test t left join test2 t2 on (t1.potiton = t2.position -1) left join test2 t3 on (t1.potiton=t3.position +1) where t.id= t1.test_id and t1.category_id =x and t1.test_id = x limit 3[/sql]
какие у вас будут предложения?
может я заблуждаюсь и подготавливать данные по крону в другую таблицу не надо, а можно сделать более простым способом?
есть таблица:
test
---------
id int(10),
category_id int(10),
number double (9,5),
created timestamp(14),
primary key id
select * from test where category_id = x order by number desc, created
делаю из нее выборку 10 записей c limit получаю список все нормально
теперь вопрос: переходим на эту запись и берем данные из test по id, какие есть варианты это реализовать, price может быть одинаков
на данный момент придумал такую схему
делаю insert select в другую таблицу при вставке сортирую по price
test2
-----------
category_id int(10),
position int(10) auto_increment,
test_id int(10),
primary key (category_id,position)
список беру таким образом
[sql]select t.* from from test2 t1, test t where category_id =x order by t1.position limit x,y[/sql]
а саму запись таким образом
[sql]select t.*,t2.test_id as prev_id, t3.test_id as next_id from test2 t1, test t left join test2 t2 on (t1.potiton = t2.position -1) left join test2 t3 on (t1.potiton=t3.position +1) where t.id= t1.test_id and t1.category_id =x and t1.test_id = x limit 3[/sql]
какие у вас будут предложения?
может я заблуждаюсь и подготавливать данные по крону в другую таблицу не надо, а можно сделать более простым способом?