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: Сорри, если напрягаю .....
    
С уважением,
Константин Григорьевич.
===============
Если "низя", но очень "хотса" - то "мона" :)



--~--~---------~--~----~------------~-------~--~----~
-~----------~----~----~----~------~----~------~--~---

Ответить