AXForum  
Вернуться   AXForum > Прочие обсуждения > forum.mazzy.ru > Обсуждение статей на mazzy.ru
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.10.2004, 17:36   #11  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Хехе... А ведь таким образом можно выполнять практически любые задачи, связанные с обработкой и траверсированием древовидных структур:

Получение всех родителей текущего элемента дерева:

<div class='XPPtop'>X++</div><div class='XPP'>Classif cur;
...
[color=:blue]int[/color] n = cur.level;
...
Classif parent[ n - 1 ];

[color=:blue]select[/color] parent[ 1 ] [color=:blue]where[/color] parent[ 1 ].Id [color=:blue]==[/color] cur.ParentId
join parent[ 2 ] [color=:blue]where[/color] parent[ 2 ].Id [color=:blue]==[/color] parent[ 1 ].ParentId
...
join parent[ n - 1 ] [color=:blue]where[/color] parent[ n - 1 ].Id [color=:blue]==[/color] parent[ n - 2 ].ParentId;</div>

Получение всех детей текущего элемента получается модификацией фрагмента из поста выше, а именно:

<div class='XPPtop'>X++</div><div class='XPP'>[color=:blue]int[/color] n = ([color=:blue]select[/color] max( level ) [color=:blue]from[/color] Classif).level - cur.level;

Classif c[ n ];

[color=:blue]select[/color] c[ 1 ] [color=:blue]where[/color] c[ 1 ].ParentId [color=:blue]==[/color] cur.Id
[color=:blue]outer[/color] join c[ 2 ] [color=:blue]where[/color] c[ 2 ].ParentId [color=:blue]==[/color] c[ 1 ].Id
...
[color=:blue]outer[/color] join c[ n ] [color=:blue]where[/color] c[ n ].ParentId [color=:blue]==[/color] c[ n - 1 ].Id</div>

Полная выборка элементов с подэлементами уже описана.
Ну и т.д....
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:24.