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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [MySQL] изменить значение в подразделах дерева 
V
    Опции темы
gcc
Дата 2.8.2009, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



есть таблица:

id
parent_id
active
created


еще тестовая:
id
parent_id
active
created
left_key
right_key
level
tree - #   идентификатор дерева если много деревьев (это не надо)


если у каждого раздела есть поле active (0 или 1 значение)  
как изменить у всех подразделов (во всем дереве в низу) поле active на 1 ??
 
вот есть запрос который корректирует дерево внизу, при перемещении:

но как поменять во всем дереве( и во всех подразделах) внизу поле active на 1?

Код

            my $query = 'UPDATE '.$table_name.
                           ' SET '.$f->{left_key}.' = CASE WHEN '.$f->{right_key}.' <= '.$old->{$f->{right_key}}.'
                                     THEN '.$f->{left_key}.' + '.$skew_edit.'
                                     ELSE CASE WHEN '.$f->{left_key}.' > '.$old->{$f->{right_key}}.'
                                               THEN '.$f->{left_key}.' - '.$skew_tree.'
                                               ELSE '.$f->{left_key}.'
                                          END
                               END,
                    '.$f->{level}.' =  CASE WHEN '.$f->{right_key}.' <= '.$old->{$f->{right_key}}.'
                                    THEN '.$f->{level}.' + '.$skew_level.'
                                    ELSE '.$f->{level}.'
                               END,
                    '.$f->{right_key}.' = CASE WHEN '.$f->{right_key}.' <= '.$old->{$f->{right_key}}.'
                                     THEN '.$f->{right_key}.' + '.$skew_edit.'
                                     ELSE CASE WHEN '.$f->{right_key}.' < '.$new->{$f->{left_key}}.'
                                               THEN '.$f->{right_key}.' - '.$skew_tree.'
                                               ELSE '.$f->{right_key}.'
                                          END
                                END
                WHERE
                    '.($table->{multi} ? $f->{tree}.' = '.$old->{$f->{tree}}.' AND ' : '').
                     $f->{right_key}.' > '.$old->{$f->{left_key}}.' AND '.
                     $f->{left_key}.' < '.$new->{$f->{left_key}}.';';



http://habrahabr.ru/blogs/perl/65495/

Это сообщение отредактировал(а) gcc - 2.8.2009, 14:19
PM WWW ICQ Skype GTalk Jabber   Вверх
gcc
Дата 6.8.2009, 03:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



разобрался, легко, поставить условие не больше в диапазоне от левого порядка и правого....
PM WWW ICQ Skype GTalk Jabber   Вверх
Zloxa
Дата 6.8.2009, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

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



Цитата(gcc @  6.8.2009,  03:29 Найти цитируемый пост)
разобрался

Ну, слава богу, поздравляю!
Небось таки изволили почитать по тому линку, который сами же и привели.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




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


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

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