Фрилансеры предложат решение вашей задачи уже через несколько минут!

Публикация заказа на фриланс бирже не займет много времени.

3 года назад
Алексей
31 год, Россия
13 лет в сервисе
Был онлайн 9 месяцев назад
22 отзыва
100% фрилансеров рекомендуют 83% заказов с выбором исполнителя
3 года назад

Задана следующая структура таблицы:
id | name | position

Вывод таблицы всегда сортируется по столбцу position (ASC)
3   Яблоко      1
1   Апельсин    2
4   Груша       3
5   Арбуз       4
2   Персик      5

Предположим, строку Персик мы захотели передвинуть на 1 позицию вверх.
Соответственно position у нее изменится на 4, а у арбуза на 5.

3   Яблоко      1
1   Апельсин    2
4   Груша       3
2   Персик      4
5   Арбуз       5


Задача.
Составить алгоритм (можно псевдо код на PHP) для сохранения нового порядка строк.
Предполагается, что на входе алгоритма мы имеем следующие данные:
    ID передвинутой строки (в случае с персиком это 2 )
    ID следующей строки (в данном случае следует арбуз, т.е. 5 )
    ID предыдущей строки (в данном случае предшествует груша, т.е. 4 )


В алгоритме должны быть SQL запрос(ы).
Предусмотреть все варианты передвижения любой строки на любое место, т.е. возможны случаи, когда будут известны только два параметра.
(например, если бы захотели передвинуть яблоко в самый низ, т.е. не будет ID следующей строки.)

P.S.
Т.е. в конечном счете следует сделать обновление столбца position.
При этом значение MAX position должен равняться MAX значению ID (например, чтобы не было position = 6, когда всего 5 строк)

 

Выбранный исполнитель
Александр К.
29 лет, Беларусь
13 лет в сервисе
Был онлайн 5 месяцев назад
3 года назад

$5

1 день

Отзыв заказчика
Отличный исполнитель! Четко выполнил работу - сразу понимает тех. задание ! Рекомендую ! Будем сотрудничать далее.
Отзыв фрилансера
Задача была сформулирована чётко, оплата моментальная, отличный заказчик, рекомендую!
Сергей Прижимов
22 года, Россия
6 лет в сервисе
Был онлайн 1 день назад
3 года назад
Дмитрий Бутейко
25 лет, Украина
4 года в сервисе
Был онлайн 3 года назад
3 года назад
Александр Шевченко
33 года, Украина
10 лет в сервисе
Был онлайн 1 год назад
3 года назад
Роман Ш.
26 лет, Украина
8 лет в сервисе
Был онлайн 20 часов назад
3 года назад
Александр К.
29 лет, Беларусь
13 лет в сервисе
Был онлайн 5 месяцев назад
3 года назад
Сергей В.
Сергей В. 
33 года, Россия
10 лет в сервисе
Был онлайн 1 год назад
3 года назад
Руслан М.
35 лет, Россия
3 года в сервисе
Был онлайн 2 года назад
3 года назад

Другие заказы в категории «Веб-программирование»

Здесь заказчик и фрилансеры могут обсуждать заказ до начала его выполнения.
Фрилансеры могут участвовать в обсуждении только после подачи заявки.
Здесь заказчик будет контролировать выполнение заказа и общаться с исполнителем.
Доступ к этому разделу имеют только заказчик и выбранный исполнитель.
Все материалы этого раздела закрыты от поисковых систем.