"Константин"

>    Оносительно недавно с удовольствием для себя открыл прелесть
>    конструкции WITH RECURSIVE. Что сказать - КЛАС !!!

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

>    Но ещё не до конца вьезжаю как её на полную катушку использовать ;)
>    Подскажите плиз ...
>
>    Есть документооборот основанный на снятиях каточек, необходимо
>    построить отчёт о не выполненных заказах. Т.е. о к-ве карточек
>    не не снятых расходом клиента, но с выводом всех промежуточных
>    статусов ... Делаю это примерно так:

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

>        for select ti, sum(q) from (
>            WITH RECURSIVE Recursion as (
>              select m0.type_id ti, d0.id ci, d0.quantity q from vw_det0 d0
>               join vw_DOC0 m0 on m0.id = d0.doc_id and d0.card_id = -1 and
>d0.tovar_id = :tov_id
>              UNION ALL
>              select m1.type_id ti, d1.id ci, d1.quantity q from vw_det0 d1
>               join vw_DOC0 m1 on m1.id = d1.doc_id
>                join Recursion r on r.ci = d1.card_id
>            ) select * from Recursion
>         ) group by ti into :ti, :tmp do

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

--
Хорсун Влад


Ответить