Страница 1 из 1
Деревья. Копирование ветки.
Добавлено: 20 янв 2006, 12:19
RESEt
Здравствуйте!
Научите, как скопировать ветку дерева...
Алгоритм или пример кода.
Добавлено: 20 янв 2006, 13:31
Dimitry Sibiryakov
Это зависит от метода хранения твоего дерева и может быть как простой INSERT..SELECT так и рекурсивная SP.
Добавлено: 20 янв 2006, 14:20
RESEt
Хранится в простом виде: таблица с полями ID, ID_PARENT, NAME.
А копировать нужно всю ветку с её детьми.
Добавлено: 20 янв 2006, 15:06
kdv
мдя. в общем, нужна рекурсивная процедура, проходящая по элементам ветки сверху вниз. И копирующая данные поэлементно. ничего больше посоветовать не могу, кроме как написать такую процедуру самостоятельно. если для тебя обход дерева не проблема (а примеры есть), то и копирование также легко сделаешь. тут никаких алгоритмических секретов нет.
Добавлено: 20 янв 2006, 15:33
RESEt
Обход-то не проблема. А вот именно копирование.... Пишу ХП для этого дела сейчас, в ней никак не могу уследить за новыми родителями... путаюсь...
Пробовал и вширь и вглубь

обходить дерево...
Тугой день - пятница...
Зато IBAnalyst скачал. Здоровская вещь!
Добавлено: 20 янв 2006, 16:17
kdv
если ты же на sql.ru поднял тему, то ну и намутил в процедуре... Ты найти на сайте в качестве болванки подходящую рекурсивную процедуру для обхода дерева. А потом к ней лепи копирование.
Добавлено: 20 янв 2006, 17:09
RESEt
Обход дерева не проблема: это процедура GET_CHILD_CELLS...
В понедельник я попаду...
