В DB2 SQL У меня есть таблица, которая содержит 3 столбца: parent_id
, id
и count
. Это таблица иерархии. Мне нужен рекурсивный запрос, чтобы получить все листовые узлы и их общий счет, а также другой запрос, чтобы получить все листовые узлы и их общее количество плюс стоимость каждого узла (цена сохранена в другой таблице (id
, price
))Как получить узлы листа рекурсивным запросом в db2?
Я попробовал этот запрос, но он не работает:
with COMP_P (COMPONENT,SUBCOMPONENT,SUBCOMPCOUNT) as (
(select C.COMPONENT,C.SUBCOMPONENT,C.SUBCOMPCOUNT from COMPS C WHERE C.COMPONENT = 'A')
UNION ALL
(SELECT P.COMPONENT,C.SUBCOMPONENT,C.SUBCOMPCOUNT * P.SUBCOMPCOUNT from COMPS C,COMP_P P WHERE P.SUBCOMPONENT = C.COMPONENT))
SELECT COMPONENT,SUBCOMPONENT,sum(SUBCOMPCOUNT) As Count FROM COMP_P group by COMPONENT,SUBCOMPONENT ;
это дает мне лист узлы и другие. Я попробовал это для второй части:
with COMP_P (COMPONENT,SUBCOMPONENT,SUBCOMPCOUNT) as (
(select C.COMPONENT,C.SUBCOMPONENT,C.SUBCOMPCOUNT from COMPS C WHERE C.COMPONENT = 'A')
UNION ALL
(SELECT P.COMPONENT,C.SUBCOMPONENT,C.SUBCOMPCOUNT * P.SUBCOMPCOUNT from COMPS C,COMP_P P WHERE P.SUBCOMPONENT = C.COMPONENT))
SELECT COMPONENT,SUBCOMPONENT,sum(SUBCOMPCOUNT) As Count,sum(SUBCOMPCOUNT) * partcosts.cost FROM COMP_P,partcosts where partcosts.partid.id=COMP_P.SUBCOMPONENT group by COMPONENT,SUBCOMPONENT ;