Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
RESEt
- Сообщения: 4
- Зарегистрирован: 20 янв 2006, 12:15
Сообщение
RESEt » 20 янв 2006, 12:19
Здравствуйте!
Научите, как скопировать ветку дерева...
Алгоритм или пример кода.
-
Dimitry Sibiryakov
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Сообщение
Dimitry Sibiryakov » 20 янв 2006, 13:31
Это зависит от метода хранения твоего дерева и может быть как простой INSERT..SELECT так и рекурсивная SP.
-
RESEt
- Сообщения: 4
- Зарегистрирован: 20 янв 2006, 12:15
Сообщение
RESEt » 20 янв 2006, 14:20
Хранится в простом виде: таблица с полями ID, ID_PARENT, NAME.
А копировать нужно всю ветку с её детьми.
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 20 янв 2006, 15:06
мдя. в общем, нужна рекурсивная процедура, проходящая по элементам ветки сверху вниз. И копирующая данные поэлементно. ничего больше посоветовать не могу, кроме как написать такую процедуру самостоятельно. если для тебя обход дерева не проблема (а примеры есть), то и копирование также легко сделаешь. тут никаких алгоритмических секретов нет.
-
RESEt
- Сообщения: 4
- Зарегистрирован: 20 янв 2006, 12:15
Сообщение
RESEt » 20 янв 2006, 15:33
Обход-то не проблема. А вот именно копирование.... Пишу ХП для этого дела сейчас, в ней никак не могу уследить за новыми родителями... путаюсь...
Пробовал и вширь и вглубь

обходить дерево...
Тугой день - пятница...
Зато IBAnalyst скачал. Здоровская вещь!
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 20 янв 2006, 16:17
если ты же на sql.ru поднял тему, то ну и намутил в процедуре... Ты найти на сайте в качестве болванки подходящую рекурсивную процедуру для обхода дерева. А потом к ней лепи копирование.
-
RESEt
- Сообщения: 4
- Зарегистрирован: 20 янв 2006, 12:15
Сообщение
RESEt » 20 янв 2006, 17:09
Обход дерева не проблема: это процедура GET_CHILD_CELLS...
В понедельник я попаду...
