Помогите с запросами

Статус
Закрыто для дальнейших ответов.

morro

Member
Регистрация
06.06.2011
Сообщения
15
Помогите с запросами.
Есть таблица


Собственно что нужно:

Обновление таблиц по позиции
( pos 5 на pos 2
pos 2,3,4 смещаются соответственно на позицию вниз)

и обратный порядок, обновление таблиц по позиции
( pos 2 на pos 5
pos 5,4,3 смещаются соответственно на позицию вверх)
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
а если просто сделать таблицу в обратном (относительно того что на картинке) порядке и удалять самый верхний, а новый просто добавлять
 

morro

Member
Регистрация
06.06.2011
Сообщения
15
Вариант но не то.
Задача в смене позиций. Я на рис. написал только 6 id.
А их может быть больше, и допустим нужно 101 поставить на четвёртую позицию ну а остальные просто сместить на одну позицию вниз. Ну и обратный запрос 10 поз поставить на 101 а остальные просто сместить на одну позицию вверх.
 

rhamdeew

Well-Known Member
Регистрация
12.04.2012
Сообщения
57
А что если в отдельной таблице хранить только ID документов в их "весом"? Оперировать такой таблицей будет намного резче я думаю ) Хотя на небольших таблицах с данными в такой магии нет нужды.

Думаю вам нужно примерно это -http://www.askdev.ru/mysql/5594/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0-%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B/
Здесь решение похожей задачи при помощи одного SQL-запроса
 

Aristotel

Well-Known Member
Регистрация
14.04.2011
Сообщения
213
PHP:
$x=2;
$y=5;
mysql_query("UPDATE table1 SET pos=pos-1 WHERE pos>'$x' AND pos<='$y'",$db);
mysql_query("UPDATE table1 SET pos='$y' WHERE pos='$x' LIMIT 1",$db);
Это вообщем подходит под пример. Х и У можно контролировать, вот тока если делать в обратную сторону то надо поменять их меcтами и что та придумать с лимитом. Это вообщем проста идея и не уверен что хорошая.
 
Статус
Закрыто для дальнейших ответов.
Верх Низ