powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / древовидная структура
4 сообщений из 4, страница 1 из 1
древовидная структура
    #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
древовидная структура
    #33091165
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы сделать рекурсию наоборот (в данном случае это "обход дерева вниз"), то надо сравнивать по номеру PARENT. Т.е. запрос д.б. что-то вроде:
Код: plaintext
1.
... where t.PARENT=:ID
Иными словами вы ищете всех потомков, которые являются детьми узла с номером ID.
...
Рейтинг: 0 / 0
древовидная структура
    #33091236
aleks_t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Процедура выдает ошибку multiple rows in singleton select, так как при Вашем условии результатом будут 2 записи - потомок 1 и потомок 2. Но все равно спасибо
...
Рейтинг: 0 / 0
древовидная структура
    #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]