Предполагая, что у меня есть эта таблица:Рекурсивной сумма значений в иерархической таблице в Oracle 10g
CREATE TABLE MY_EXAMPLE (ID NUMBER , PARENT NUMBER , VALUE NUMBER);
Insert into MY_EXAMPLE (ID,PARENT,VALUE) values (1,null,100);
Insert into MY_EXAMPLE (ID,PARENT,VALUE) values (2,1,50);
Insert into MY_EXAMPLE (ID,PARENT,VALUE) values (3,null,0);
Insert into MY_EXAMPLE (ID,PARENT,VALUE) values (4,2,1000);
Insert into MY_EXAMPLE (ID,PARENT,VALUE) values (5,1,1);
|id |parent |value |
|1 |null |100 |
|2 |1 |50 |
|3 |null |0 |
|4 |2 |1000 |
|5 |1 |1 |
мне нужно создать представление (которое должно хорошо работать) с тем же количеством строк, но дает плюс Ей суммарная стоимость детей. Возможны многие уровни, а также многие дети.
|id |parent |value |
|1 |null |1151 | (sum of 1 + 2 + 4 + 5)
|2 |1 |1050 | (sum of 2 + 4)
|3 |null |0 | (only 3 because has no children)
|4 |2 |1000 | (only 4 because has no children)
|5 |1 |1 | (only 5 because has no children)
пса .: Я пытался что-то вроде this, но он не работает в Oracle 10g первого, потому что ключевое слово RECURSIVE не поддерживается, и вторым, потому что он не допустит рекурсивным ("вперед или рекурсивная референцию имя запроса в предложении WITH не допускается ").
Также я не мог найти способ сделать это с помощью CONNECT BY, который включает в себя id и родительские столбцы и дает мне всю таблицу (в моих попытках мне всегда приходилось использовать START WITH).
Я мог бы принять ваш ответ, но, по правде говоря, мне нужна лучшая производительность. Я собираюсь рассчитать и сохранить сумму с помощью триггеров. –