Мне нужна помощь, чтобы сделать рекурсивный запрос.
--select * from tmpProduto; create table tmpProduto( idpro number, descpro varchar2(100), unimetr varchar2(3), qtty number(10,4)) alter table tmpProduto add constraint pk_TmpProduct primary key (idpro); --select * from tmpComposition; create table tmpComposition( idmodel number, idcomp number, qtty number(10,4)); alter table tmpComposition add constraint pk_TmpCompositon primary key (idmodel, idcomp);
У меня есть две таблицы и я делаю рекурсивный запрос
SELECT p.idpro, c.idmodel, c.idcomp, c.qtty, LEVEL lnum FROM tmpComposition c INNER JOIN tmpProduto p ON (p.idpro = c.idmodel) CONNECT BY PRIOR c.idcomp = c.idmodel START WITH M.CODMOD = :vcdProduto;
Я хочу сделать это, вычислить поле qtty с помощью
product.qtty * component.qtty -- здесь мне нужно применить рекурсию, где уровень равен 1
component.qtty * component. qtty -- здесь уровень больше 1
образец:
продукт
idprod | descprod | qtty
0001 | 'Test Prod1' | 1
0002 | 'Test Prod2' | 1
компонент
idmodel | idcomp | qtty
0001 | 0002 | 0,5
0001 | 0003 | 0,43
0001 | 0075 | 1,15
0002 | 0005 | 0,24
0005 | 0006 | 0,25
0005 | 0007 | 0,78
результат, который мне нужен
idmodel | idcomp | p.qtty | c.qtty | value_I_want
0001 | 0002 | 1 | 0,5 | 0,5
0002 | 0005 | | 0,24 | 0,12
0005 | 0006 | | 0,25 | 0,03
0005 | 0007 | | 0,78 | 0,0936
0001 | 0003 | 1 | 0,43 | 0,43
0001 | 0075 | 1 | 1,15 | 1,15