Авто приращение заказа - PullRequest
       3

Авто приращение заказа

0 голосов
/ 23 января 2012

У меня есть таблица с идентификатором автоинкремента, который упорядочивает строки. Я сделал форму, где вы можете изменить порядок строк.

id item
1 - строка а
2 - ряд б
3 - рядный c
4 - рядный d

Но первичный ключ (автоинкремент) не допускает удваивания, как показано ниже:

id item
1 - строка а
2 - ряд б
2 - ряд c
4 - рядный d

Есть ли способ изменить порядок, используя скрипт mysql или php, чтобы я мог изменить порядок:

id item
1 - строка а
2 - ряд б
3 - строка d
4 - строка c

  • в приведенном выше примере строки d и c изменились, например. строка c переместилась на 1 вверх, а d переместилась на 1 вниз.

    Буду признателен за любую помощь!

UPDATE

Строки являются динамическими. если, скажем, элемент c удален, счет будет 1, 2, 4. Как бы вы сделали, чтобы они закрыли пробел, если некоторые будут удалены

Ответы [ 3 ]

4 голосов
/ 23 января 2012

Добавьте поле заказа и используйте его для заказа

идентификатор позиции заказа

1 - позиция а - 1

2 - позиция б - 2

3 - позиция с - 4

4 - позиция d - 3

ВЫБРАТЬ * ОТ table ЗАКАЗАТЬ НА order

0 голосов
/ 23 января 2012

Если вы хотите закрыть пробел, не делайте автоинкремент поля Id, при вставке новой строки получите максимальную запись id из таблицы и добавьте к ней 1, в этом случае пропусков при удалении некоторых строк не будет между.

0 голосов
/ 23 января 2012

Столбец ID вашей таблицы не выполняет никакой функции, кроме как для уникальной идентификации записей в ней. Если вы хотите получить доступ к записи № 3, тогда запись № 3 всегда должна быть одной и той же записью. Если вы удаляете запись № 3, то кто-то пытается ее извлечь, он должен вернуть тот факт, что записи № 3 больше не существует, а не какой-либо другой записи, которой присвоено значение 3 для ее идентификатора.

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

Если необходимые данные должны быть в определенном порядке, вы можете использовать ORDER BY, чтобы указать столбцы для сортировки. Если ни один из ваших столбцов не предоставляет достаточных данных для сортировки, как вы хотите, то подумайте о добавлении столбца «сортировки», который содержит значение для порядка, в котором элемент должен быть в результирующем наборе, а затем ORDER BY этого столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...