Hi, многоуважаемый All!
Есть задачка реализовать уделение ветки
дерева. Я её реализовал следующим образом:
for select id, islevel from obj_tdg(:id) o
left join link l on fid = o.id
group by id, islevel having count(l.tid) = 1
order by islevel desc into :result, :temp
do delete from objects where id = :Result;
где:
:id - то что нужно удалить
obj_tdg - выбирает все вхождения в данную ветку по
табличке objects
level - уровень вложенности в :ID по возростанию
link - табличка связей fid (from), tid (to)
просто у меня сомнения насчёт последовательности выполнения ...
процедурка obj_tdg выбирает-то из таблички object в связке с
табличкой link. Но если таблицу link я пока не трогаю то из
таблички object активно удаляю ...
Я конечно поставил "удаление с самых нижних" уровней дерева
(order by islevel desc) но не совсем понятно, в связи с group by,
"когда" будет произведена сортировка, а group by необходим что-бы не
удалить "ссылки" на другие "папки" (having count(l.tid) = 1).
PS: Сорри, если напрягаю .....
С уважением,
Константин Григорьевич.
===============
Если "низя", но очень "хотса" - то "мона" :)
--~--~---------~--~----~------------~-------~--~----~
-~----------~----~----~----~------~----~------~--~---