Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обновление полей одним запросом 
:(
    Опции темы
SDEVIL
Дата 23.12.2007, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 30.10.2006

Репутация: нет
Всего: 1



Суть такая есть таблица в которой хранятся записи:

id  |  parent  |  name  |  order

1       1             Имя1        1
2       1             Имя2        3
3       1             Имя3        2
4       2             Имя1        1
5       2             Имя2        2
6       2             Имя3        3

где id -уникальный номер записи, parent - id раздела в котором эта запись отображается,
name - просто имя, order - порядок сортировки

т.е. на сайте выглядит так-

Раздел 1

Имя2
Имя3
Имя1


Раздел 2

Имя3
Имя2
Имя1

Т.е. записи сортируются в зависимости от значения поля order(по убыванию!).

При добавлении новой записи ей автоматически устанавливается order равный максимальному значению order для данного раздела +1, и запись автоматически становится первой в списке на сайте.

Встает вопрос а как добавить запись в конец списка?

Т.е. записи надо установить значение поля order = 1, но это надо изменить все значения у других записей которые так же находятся в этом разделе на +1, это просто если записей не больше 20, а если их 1000, получается надо выполнить 1000 запросов к базе!!!
Возможно ли одним запросом выполнить обновление значения поля order на значение +1

P.S. Что-то вроде:

UPDATE моя таблица SET order +1 WHERE parent = 2
 smile  smile  smile 

--------------------
Подпись сбежала к другому юзверю....
PM MAIL   Вверх
skyboy
Дата 23.12.2007, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Код

UPDATE `моя таблица` SET `order` = `order` +1 WHERE `parent` = 2

PM MAIL   Вверх
vi_k
Дата 30.12.2007, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 29.12.2007

Репутация: нет
Всего: нет



Есть вариант проще: сделать order знаковым полем и спокойно отнестись к значениям 0, -1, -2 и т.д. Сортировка будет соответствующая.

Соответственно, вторым вопросом у вас будет - а как вставить запись посредине. Для этого, в своё время, в бейсике строки нумеровались с шагом: 10, 20, 30 и т.д. При необходимости вставить новую строку, ей давался номер 5, 15, 25, и т.д. Мысль, думаю, понятна...

Это сообщение отредактировал(а) vi_k - 30.12.2007, 15:26
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.