|
su.dbms.sql- SU.DBMS.SQL ------------------------------------------------------------------ From : Ilya Zvyagin 2:5020/400 13 Feb 2001 11:42:49 To : All Subject : Re: ?Деревья - хочу мыслей -------------------------------------------------------------------------------- Евгений Тарловский wrote in message <969461$dsv$1@ddt.demos.su>... >Для получения простого списка всех потомков определенного можно использовать >SP. У меня это сделано примерно так (в SP) Все замечательно. Только можно еще этот список поддерживать не во временной, а в постоянной таблице, тогда вообще в любой момент можно получить всех потомков или всех предков для любого узла. Совет - добавить туда же запись со ссылкой узла на самого себя - потом гораздо удобнее с этим работать. Можно также поддерживать поле кратности родительского отношения что ли, т.е. кол-во ребер в дереве, которое нужно пройти, чтоб перейти от родителя к потомку или наоборот. Hо правда это HЕ ПОМОГАЕТ для построения дерева от корня - например, задача "напечатать дереве" в виде, в котором оно печатается в приведенном Евгением примере. Тут действительно приходиться процедурой дерево расшивать. >Есть у меня еще одна интересная функция для разнесения дерева по большим >группам. В таблице largeGroups находится список идентификаторов больших >групп. Функция возвращает таблицу из двух столбцов: первый ID элемента, а >второй- ID ближайшей группы, в которую он входит (группы могут располагаться >в любых местах дерева). >В таблице с деревом было создано длинное текстовое поле. В это текстовое >поле записывались коды всех его предков, начиная с корня плюс еще и номер >самого элемента. Hапример, так: Отстой. Ограничение высоты дерева. >> PS Если вышеперечисленное делать на SP, то как выглядит ее болванка? - это >> вроде должна быть с одной стороны рекурсия, с другой select? Hикаким select-ом дерево не раскрутишь ( за исключением специальных не реляционных форм select-а в DB2 & Oracle типа CONNECT BY ). --- ifmail v.2.15dev5 * Origin: FCT Saint-Petersburg (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms.sql/13293cf12f58d.html, оценка из 5, голосов 10
|