Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / древовидная структура / 4 сообщений из 4, страница 1 из 1
30.05.2005, 15:45
    #33090969
aleks_t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
древовидная структура
Есть такая проблема:
существует процедура, которая от любого элемента структуры показывает всех его родителей.
BEGIN
WHILE (:ID > 0) DO /* ищем до корня */
BEGIN
SELECT t.ID, t.PARENT, t.NAME
FROM tree t
WHERE t.ID = :ID
INTO :DID, :OID, :NAME;
ID = :OID; /* код родителя для следующей выборки */
SUSPEND;
END
END
Структура таблицы такая:
ID PARENT NAME
1 0 Родитель1
2 1 Потомок1
3 1 Потомок2
4 2 Потомок3

Мне же нужно наоборот, для корневого элемента показать всех его потомков, а для самого нижнего - только себя. Помогите кто сталкивался с такой проблемой. Спасибо.
...
Рейтинг: 0 / 0
30.05.2005, 16:54
    #33091165
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
древовидная структура
Чтобы сделать рекурсию наоборот (в данном случае это "обход дерева вниз"), то надо сравнивать по номеру PARENT. Т.е. запрос д.б. что-то вроде:
Код: plaintext
1.
... where t.PARENT=:ID
Иными словами вы ищете всех потомков, которые являются детьми узла с номером ID.
...
Рейтинг: 0 / 0
30.05.2005, 17:18
    #33091236
aleks_t
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
древовидная структура
Процедура выдает ошибку multiple rows in singleton select, так как при Вашем условии результатом будут 2 записи - потомок 1 и потомок 2. Но все равно спасибо
...
Рейтинг: 0 / 0
31.05.2005, 10:46
    #33091974
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
древовидная структура
aleks_tПроцедура выдает ошибку multiple rows in singleton select, так как при Вашем условии результатом будут 2 записи - потомок 1 и потомок 2. Но все равно спасибо
1. Во-первых, я даже не знаю какую СУБД вы используете.
2. Все правильно. У родителя может быть несколько потомков.
3. Поэтому... (догадываясь) нужно использовать курсоры, чтобы можно было выбирать по несколько записей.

4. Почитайте (поищите) раздел Статьи на SQL.RU там про древовидные структуры есть материал. Думаю вы найдете то, что надо.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / древовидная структура / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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