![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DELPHI, Paradox и древовидные структуры данных [D5, Paradox]
OneOfTheFew © (2003-03-20 13:29:00)Уважаемые Мастера !
Помогите решить такую задачу (желательно стандартными средствами: Delphi и Local SQL):
Есть парадоксовская таблица, описывающая древовидную стуктуру:
<Persons.db>
Person_id I
Parent_id I
Person_Name A(30)
Как получить список всех Person_id подчиненных указанному элементу непосредственно и опосредовано? Понятно, что глубина вложенности дерева практически не ограничена.
Заранее благодарю за помощь!
OneOfTheFew (2003-03-21 14:05:00) [1]Всем Спасибо!
Zelius (2003-03-20 22:24:00) [2]для твоей задачи может пригодиться такое решение: создать дополнительную таблицу Parent_ID, Person_ID, в которой будут харниться все пары Parent_ID со всеми возможными потомками Person_ID.
пример основной таблицы:
1 0 Петров
2 1 Иванов
3 2 Сидоров
4 2 Орлов
5 4 Козлов
а так будет выглядеть дополнительная таблица:
1 2
1 3
1 4
1 5
2 3
2 4
2 5
4 5
Mike Kouzmine (2003-03-20 17:50:00) [3]Возьми пролог. Там это считается одной строчкой :)
Соловьев (2003-03-20 17:46:00) [4]на парадоксе такое не решаемо...хотя в цыкле программно, а вот на IB и ему подобных с ХП вполне. www.ibase.ru там есть классные примеры...
OneOfTheFew (2003-03-20 17:42:00) [5]2 Соловьев
Не, Вы не поняли. Мне нужно "вычленить" поддерево все, а Ваше решение выдает только прямых "детишек". А как насчет "внуков" и "правнуков" ???
Соловьев (2003-03-20 13:31:00) [6]
select PersonID
from Persons
where ParentId=10