У меня есть список элементов, хранящихся в базе данных. Каждый элемент имеет столбец идентификатора, заголовок и столбец позиции (int).
По умолчанию, всякий раз, когда пользователь добавляет новый элемент в список, его идентификатор помещается в позицию. Так что, если у вас есть 3 предмета, с идентификаторами 1, 2, 3, их позиции также будут 1, 2, 3.
Затем, выбирая позиции, я сделаю ORDER BY position ASC
в моем SQL-запросе.
Проблема в том, что пользователь хочет использовать функцию, где он может добавить новый элемент в любом месте существующих элементов.
Поэтому, если у вас есть позиции 1, 2, 3 с позициями 1, 2, 3, он может выбрать, чтобы добавить новый элемент в позицию 2, что приведет к пунктам 1, 2, 3, 4, имеющим позиции: 1 3 4 2
Таким образом, позиция №4 будет помещена в позицию 2, позиции № 2 и 3 будут перенесены в позиции 3 и 4 и т. Д.
Какой простейший / самый эффективный алгоритм для выполнения этой вставки?