Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Построение дерева / 3 сообщений из 3, страница 1 из 1
21.05.2004, 09:07
    #32527369
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение дерева
Есть иерархическая таблица c полями fID, fText и fParentID.
Подскажите, пожалуйста(если можно примерчиком), как построить по ней дерево, если заранее не известно количество уровней.
...
Рейтинг: 0 / 0
21.05.2004, 09:23
    #32527394
Построение дерева
Наиболее часто встречаемый мной вариант - это дополнительное построение, котороу по-умному называют "транзитивное замыкание" (не проверял праивльно ли такое название). Суть в том, что к таблице с иерархическим рубрикатором создается еще одна таблица с доп. построением вида:
childId, parentId, depth
( обычно дополняется по мере добавления рубрик и уменьшается по мере удаления, как правило, при переносе рубрики из одного родителя в другого проще заново перестроить полностью)

Наглядный пример заполнения этой таблицы:
[tblRubric] id, name, parentId
[tblRubricEx] childId, parentId, depth

Пусть в tblRubric имеются следующие записи
1, Главная, 0
2, О компании, 1
3, История, 2
4, Контакты, 1

Тогда вот так выглядит tblRubricEx
1,1,0
2,1,1
3,2,2
2,2,0
3,2,1
3,3,0
4,1,1
4,4,0

Как вариант, можно в хр. процедуре сгенерить запрос с испольованием for xml explicit, который затем выполнить при помощи sp_executesql

На выходе получаем XML структуру нашего дерева всего за n селектов (n - максимальная глубина)

Данный подход работал на гос.классификаторе видов деятельности.
...
Рейтинг: 0 / 0
24.05.2004, 15:23
    #32530893
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение дерева
Большое спасибо за полезную информацию.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Построение дерева / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]