我需要获取给定节点的子节点,以及属于其最高祖先的字段。我知道如何分别获得两者,并且我可能会弄清楚如何以编程方式将两者结合起来;但我更愿意在一个查询中完成所有操作。
假设我的表包含字段 id、item_id、code 和 name,并且 item_id 为 0 是根节点,并且我的树看起来像:
id item_id code name level
------------------------------------
1 0 Root 1
2 1 my_value Child1 2
3 2 Child2 3
我可以使用以下方法获取我需要的节点:
select id, item_id, code, name, level from my_table
start with code like '%my_value%'
connect by prior id = item_id
返回:
id item_id code name level
-------------------------------------
2 1 my_value Child1 2
3 2 Child2 3
我还想从这些节点的最高祖先那里获取名称字段。我可以使用以下方法获取这些节点:
select id, item_id, code, name, level from my_table
where level = (
select max(level) as max_level from my_table
start with code like '%my_value%'
connect by prior item_id = id
)
start with code like '%my_value%'
connect by prior item_id = id
返回:
id item_id code name level
-------------------------------------
1 0 Root 1
我想将从上述查询返回的名称字段添加为添加到从第一个查询返回的两个节点的附加字段,即
id item_id code name root_name level
------------------------------------------------
2 1 my_value Child1 Root 2
3 2 Child2 Root 3
我希望这很清楚。有什么建议么?