VH>     Ну вот, хоть кто-то пользует (кроме Саши :), уже приятно ;)

        А мне как приятно ... ;) Кстати, ИМХО, ОЧЕНЬ и ОЧЕНЬ
        упростило, а точнее стало возможным писать код намного
        читабельней и понятней ... не говоря уж о там, что в моём
        случае скорость рекурсивных выборок возросла на порядок, а в
        некоторых случаях - на несколько порядков. Именно порядков,
        с чем связано не углублялся - просто пользуюсь благами
        цивилизации ;)

VH>     Ни фига не понял


        Обьясню на пальцах иначе не получится :
        отойдём частично от конкретной реализации ;)

          Примем за первое правило то, что первая часть конструкции
        WITH RECURSIVE, а именно первый запрос на выборку возвращает
        несколько записей, т.е. мы имеем не "дерево" а "кустарник"?
        если можно так выразится т.е. группа "деревьев" от общего
        "виртуального корня" котоый не берётся в расчёт, т.е. его нет.

          Примем за второе правило что на начальном этапе каждая ветвь
        идентифицируется уникальным ID в пределах "куста" и, кроме
        ссылки на родителя имеет числовое значение в количестве 1 шт. -
        назовём это листом.

          Примем за тетье правилото, что вторая часть конструкции
        WITH RECURSIVE, т.е. после UNION ALL построенна по принципу
        обхода "веток" каждой "части куста", т.е. отдельно взятого
        дерева от "виртуального корня"

        Задача: на выходе получить суммы листов каждого уровня,
        для каждого дерева внутри куста, за исключением тех деревьев
        у которых суммы листов для заданного уровня равны листу при
        корне деева (или значению листа на связанной ветке первого
        уровня кустарника)

        См. Аттач - в письме нарисовать не получилось :(
        

VH>     Но, судя по теме письма, тебе может помочь where после
VH> select * from Recursion ?

    наверное для точности - having, но всё-авно пока не придумал как :(

С уважением,
Константин Григорьевич.
===============


Ответить