在DB2 SQL中,我有一个包含3列的表:parent_id
,id
和count
。它是一个层次表。我需要一个递归查询来获取所有叶节点及其总计数,另一个查询获取所有叶节点及其总计数加上每个节点的成本(存储在另一个表中的价格id
,{{ 1}}))
我尝试了这个查询,但它不起作用:
price
它给了我叶子节点和其他。我在第二部分尝试了这个:
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 ;
答案 0 :(得分:1)
如果您只是想获取叶子节点,则不需要进行递归查询 - 您只需检查是否存在子节点:
SELECT * FROM table AS t1 WHERE NOT EXISTS (SELECT * FROM table AS t2 WHERE t2.parent_id = t1.id)
这将为您提供所有叶子节点,然后只需添加计数和连接即可获得所需的信息。
希望有所帮助!