Oracle CONNECT BY层级查询返回顶层父项但子项字段为空
问题:层级查询中子部件字段返回空值
我编写了一条从已知子部件出发的Oracle CONNECT BY层级查询,用于返回顶层父部件。该查询执行速度快且整体可用,但子部件字段(CHILD_ID、CHILD_PART)返回空值。
原查询语句如下:
WITH c AS( SELECT d.C_ID, d.PART_ID FROM T_MASTER_DAT d WHERE d.C_ID = 1124609156 ) SELECT DISTINCT c.C_ID CHILD_ID, c.PART_ID CHILD_PART, s.C_ID_1 TOP_PARENT_ID, d2.PART_ID TOP_PARENT_PART, d2.CUR_FLAG TOP_PARENT_CUR_FLAG, d2.CANCEL TOP_PARENT_CANCEL, d2.UNIT, d2.OPP_BR_UNIT FROM T_MASTER_STR s LEFT JOIN c on c.C_ID = s.C_ID_2 JOIN T_MASTER_DAT d2 on d2.C_ID = s.C_ID_1 WHERE d2.OPP_BR_UNIT is not null and d2.CUR_FLAG = 'y' and d2.CANCEL = 'n' CONNECT BY PRIOR s.C_ID_1 = s.C_ID_2 START WITH s.C_ID_2 = c.C_ID
实际环境中CTE表c由多表连接生成,核心是获取指定C_ID以查询父项。T_MASTER_DAT存储部件的ID、名称、版本、状态等信息,T_MASTER_STR是连接父子部件/装配件的结构表。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

