[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Множественная сортировка записей
hurt3
Всем привет, всех с Рождеством.
создавал тему с изменением порядка сортировки строк
http://phpforum.su/index.php?showtopic=84675
Сейчас ставится более сложная задача. Необходимо реализовать групповое перемещение строк.
Рассмотрим следующий варриант
имеется таблица id_text| id_group| sorting
начальное положение sorting
1
2
3
4
5
6
7
8
9
10
11
12
13
14
конечное



1
2

4

8
9
10
11
12
13
-----
3
5
6
7
----
14
т.е. 3 и диапазон с 5 до 7 были перемещены а это означает что необходимо произвести перенумерации диапазона строк
1
2
4
8
9
10
11
12
13

Решение задачи- нашел один вариант, но он мне кажется тяжеловат-
создается виртуальная таблица с полем имеющим автоинкримент с количеством строк нужного диапазона таким образом мы получаем необходимую нумерацию и она записывается в первую таблицу в поле sorting. я не специалист в mysql но сдается мне что будет это все очень ресурсоемко при значительном диапазоне.
может быть есть более простое решение что-то вроде IN () но с указанием диапазона?

hurt3
как насчет подобного решения?

set @i=0;
UPDATE `contentgroup_part` SET `sort` = @i := @i+1 WHERE здесь прописываем условия отбора изменяемого диапазона

подобно решение не будет ресурсоемким и долгим?
mvg
Цитата (hurt3 @ 7.01.2015 - 12:21)
Всем привет, всех с Рождеством.
создавал тему с изменением порядка сортировки строк
http://phpforum.su/index.php?showtopic=84675
Сейчас ставится более сложная задача. Необходимо реализовать групповое перемещение строк.
Рассмотрим следующий варриант
имеется таблица id_text| id_group| sorting
начальное положение sorting
1
2
3
4
5
6
7
8
9
10
11
12
13
14
конечное



1
2

4

8
9
10
11
12
13
-----
3
5
6
7
----
14
т.е. 3 и диапазон с 5 до 7 были перемещены а это означает что необходимо произвести перенумерации диапазона строк
1
2
4
8
9
10
11
12
13

Решение задачи- нашел один вариант, но он мне кажется тяжеловат-
создается виртуальная таблица с полем имеющим автоинкримент с количеством строк нужного диапазона таким образом мы получаем необходимую нумерацию и она записывается в первую таблицу в поле sorting. я не специалист в mysql но сдается мне что будет это все очень ресурсоемко при значительном диапазоне.
может быть есть более простое решение что-то вроде IN () но с указанием диапазона?

Христос родился - славим его!

Че за сервер БД?! 1Гц с 8Мб оперативы штоль? Я думаю любой виртуальный хостинг справиться с предложенной задачей тем более что это не будет происходить регулярно и выполнятся по 1000/100 запросов в секунду!

И не надо его жалеть! Еще бы это дело закрутить в stored function и дело сделано!

P.$. IN() с интервалом есть BEETWEN param1 AND param2 или WHERE param>=MIN() AND param <=MAX().
hurt3
mvg
а последний варриант?
hurt3
set @i=0;
UPDATE `contentgroup_part` SET `sort` = @i := @i+1 WHERE здесь прописываем условия отбора изменяемого диапазона
hurt3
Цитата (mvg @ 7.01.2015 - 14:35)

Че за сервер БД?! 1Гц с 8Мб оперативы штоль? Я думаю любой виртуальный хостинг справиться с предложенной задачей тем более что это не будет происходить регулярно и выполнятся по 1000/100 запросов в секунду!

И не надо его жалеть! Еще бы это дело закрутить в stored function и дело сделано!


это понятно все, но мне кажется нужно изначально прописывать максимально упрощенные решения облегчающие нагрузку
hurt3
дублирую вопрос еще раз

как насчет подобного решения?

set @i=0;
UPDATE `contentgroup_part` SET `sort` = @i := @i+1 WHERE здесь прописываем условия отбора изменяемого диапазона

подобно решение не будет ресурсоемким и долгим?
sergeiss
hurt3, тебе в предыдущей теме уже давали решения. Которые очень легко переносятся на "групповые" перемещения. Подумай немного сам, не старайся сразу же получить ответ на форуме. Для тебя же полезнее будет smile.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
hurt3
sergeiss
ну не скажите все-таки решения отличаются
Valick
Цитата (hurt3 @ 8.01.2015 - 10:16)
ну не скажите все-таки решения отличаются

ну как "родилось на свет" что-то вменяемое?

_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.