|
|
|
| Есть таблица article - id,id_parent, name,txt, sort
В поле сорт хранятся числа, по которым производится сортировка.
Как правильно построить запрос, чтобы, например, строку. у которой id=5 передвинуть назад?
Как я уже сказал сортировка происходит по полю sort. | |
|
|
|
|
|
|
|
для: garold
(25.05.2010 в 17:50)
| | зависит от того, что за числа.
Вероятнее всего менять значение поля придется не только у этой строки, но и у всех вовлеченных в смену порядка. | |
|
|
|
|
|
|
|
для: Trianon
(25.05.2010 в 17:59)
| | Нашел такой вариант
У тебя есть $id записи, которую нужно двинуть. Достаёшь её позицию. Далее получаешь значение позиции записи «выше»код SQL
1:
SELECT MIN(sort) FROM ... WHERE sort > $p1
или «ниже»код SQL
1:
SELECT MAX(sort) FROM ... WHERE sort < $p1
Ну а дальше осталось их обменятькод SQL
1:
UPDATE ... SET sort = ({$p1} + {$p2} - sort) WHERE sort IN ($p1, $p2)
|
Вообще целые числа, думаю это самый удобный вариант | |
|
|
|
|
|
|
|
для: garold
(25.05.2010 в 18:04)
| | так строки просто меняются местами.
Если это смежные строки - вполне достаточно. | |
|
|
|
|
|
|
|
для: Trianon
(25.05.2010 в 18:15)
| | как понять смежные в данном случае? | |
|
|
|
|
|
|
|
для: garold
(25.05.2010 в 18:20)
| | я к тому, что таким методом более чем на шаг строку не передвинешь.
Для движения сразу на несколько позиций код будет посложнее. | |
|
|
|