[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: сортировка строк
maximka787
Ребят, подскажите пожалуйста, как мне хранить данные сортировки 1000 и более строк в БД. К примеру плеер вконткте. Там можно каждый трек отсортировать относительно другого. В каком виде лучше хранить переменную? Не делать же после каждого перемещения строки выше/ниже перезапись всех строк с новой последовательностью..



Спустя 1 час, 24 минуты, 11 секунд (27.09.2012 - 15:05) Guest написал(а):
Цитата (maximka787 @ 27.09.2012 - 13:41)
Не делать же после каждого перемещения строки выше/ниже перезапись всех строк с новой последовательностью..

wink.gif Из ничего сортировка не получится, так что обновлять. Только не всегда все строки. То есть если запись перемещается с меньшей позиции, то нужно обновить строки, которые позицией выше, от начальной позиции перемещаемой записи biggrin.gif . Если перемещается с большей, обновить строки, которые позицией выше(или равны!!), от конечной позиции перемещаемой записи biggrin.gif

Спустя 1 минута, 26 секунд (27.09.2012 - 15:06) T1grOK написал(а):
Как смог так и объяснил. Но суть думаю Вам понятна smile.gif

Спустя 44 минуты, 1 секунда (27.09.2012 - 15:50) sergeiss написал(а):
Цитата (maximka787 @ 27.09.2012 - 14:41)
Не делать же после каждого перемещения строки выше/ниже перезапись всех строк с новой последовательностью..

Очень странный вопрос... Последовательность строк надо определять не их положением в БД, а по какому-нибудь четкому признаку. Или ты всегда сортируешь, перезаписывая строки??? blink.gif

PS. Можно учитывать позицию относительно других данных, а не абсолютный номер позиции. Тогда обновлять надо будет всего 3 строки, вне зависимости от их общего количества.

PPS. Сорри, обновлять надо будет от 3 до 5 строк smile.gif

Спустя 11 часов, 22 минуты, 25 секунд (28.09.2012 - 03:13) neadekvat написал(а):
maximka787, на форуме проводился конкурс сортировки. Собственно, там можно глянуть.

Так, по факту, сходу можно найти два варианта:
1. Поменять значения местами (если соседи), смещать значения (если много).
То есть было (цифра - значение в бд, по которому идет сортировка):
а 1, б 2, в 3. Перемещаем "в" в начало, получаем:
в 1, а 2, б 3. То есть задеты будут все строки, которые находятся выше.

2. Использовать дроби:
а 1, б 2, в 3. Перемещаем:
в 0.5, а 1, б 2. Перемещаем "а":
а 0.25, в 0.5, б 2.
И т.д. В таком случаи изменяется свойство только одной строки.

Спустя 6 часов, 8 минут, 40 секунд (28.09.2012 - 09:21) maximka787 написал(а):
sergeiss
Интересная логика. Ток не совсем понятна. У меня таблица `id`, ... , `my_sort.
в любом случае мне в БД придется хранить данные, а не где-то еще. По четкому признаку понятно, что можно, но в данном случае вопрос именно на одинаковые записи, то есть лучший пример это "вконтакте плелист", там где можно треки перетаскивать в любое место с любым шагом. Вот мне и интересно стало в каком виде хранятся данные для сортировки.

Спустя 6 часов, 53 минуты, 10 секунд (28.09.2012 - 16:15) neadekvat написал(а):
Цитата (sergeiss @ 27.09.2012 - 16:50)
PS. Можно учитывать позицию относительно других данных, а не абсолютный номер позиции. Тогда обновлять надо будет всего 3 строки, вне зависимости от их общего количества.

А вот это интересно, кстати. Я не помню такого на конкурсе, который с годик назад тут был.

Спустя 1 час, 12 минут, 22 секунды (28.09.2012 - 17:27) inpost написал(а):
Ну есть 1.2.3. Сделать 3 выше, меняешь местами 2 и 3. 2 записи затронул.
Надо поставить выше всех элементов: берёшь какую-то точку старта с прогнозом на количество данных, допустим 10000. Итого поднимать выше других данных можно 10 000 раз. В конце, когда достигнешь отметки 1, то пересчитать все данные снова с точки 10 000. Поэтому поднять или опустить делается вообще в 1 запись.
Как раз в конкурсе в своей работе я именно это и отобразил.


_____________
..Работает - не трогай!
Быстрый ответ:

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