![]() |
|
Модераторы: skyboy |
![]()
|
|
| SDEVIL |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 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 --------------------
Подпись сбежала к другому юзверю.... |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
|
|||
|
||||
| vi_k |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 29.12.2007 Репутация: нет Всего: нет |
Есть вариант проще: сделать order знаковым полем и спокойно отнестись к значениям 0, -1, -2 и т.д. Сортировка будет соответствующая.
Соответственно, вторым вопросом у вас будет - а как вставить запись посредине. Для этого, в своё время, в бейсике строки нумеровались с шагом: 10, 20, 30 и т.д. При необходимости вставить новую строку, ей давался номер 5, 15, 25, и т.д. Мысль, думаю, понятна... Это сообщение отредактировал(а) vi_k - 30.12.2007, 15:26 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |