Oracle Apex 22.1树形控件子节点重复问题求助
问题排查与解决方案
核心问题分析
你的树形查询出现第三层节点重复的根本原因是各层级节点的ID设计不唯一,导致CONNECT BY关联逻辑错误:
- 第二层节点的ID仅使用
ORG_UNIT_NAME,该字段可能在不同BU下重复(即使当前数据无重复,设计上存在隐患); - 第三层节点的PID仅使用
ORG_UNIT_NAME,未关联对应BU,导致所有归属该ORG的DEPT会被挂载到所有同名ORG节点下,而非仅归属的父节点。
同时原SQL存在多处语法错误(如SELECT子句中多余的逗号),也会干扰查询逻辑。
修正后的查询语句
SELECT CASE WHEN connect_by_isleaf = 1 THEN 0 WHEN level = 1 THEN 1 ELSE -1 END AS status, level AS "level", display AS name, NULL AS icon, id AS id, tooltip AS tooltip, link AS link FROM ( -- 第一层:BU节点 SELECT bu_name AS display, NULL AS pid, bu_name AS id, 1 AS "level", 'javascript:$s(''P1_SELECTED_NODE'', '''||bu_name||'||||'')' AS link, NULL AS tooltip FROM dept_bu_list GROUP BY bu_name UNION ALL -- 第二层:ORG节点,用BU+ORG组合确保ID唯一 SELECT org_unit_name AS display, bu_name AS pid, bu_name || '|' || org_unit_name AS id, 2 AS "level", 'javascript:$s(''P1_SELECTED_NODE'', '''||bu_name||'|'||org_unit_name||'|||'')' AS link, NULL AS tooltip FROM dept_bu_list GROUP BY bu_name, org_unit_name UNION ALL -- 第三层:DEPT节点,PID对应第二层的组合ID,保证关联正确父节点 SELECT dept_name AS display, bu_name || '|' || org_unit_name AS pid, bu_name || '|' || org_unit_name || '|' || dept_name AS id, 3 AS "level", 'javascript:$s(''P1_SELECTED_NODE'', '''||bu_name||'|'||org_unit_name||'|'||dept_name||'||'')' AS link, NULL AS tooltip FROM dept_bu_list GROUP BY bu_name, org_unit_name, dept_name ) START WITH pid IS NULL CONNECT BY PRIOR id = pid ORDER SIBLINGS BY display
关键修正点说明
- 节点ID唯一性:
- 第二层节点ID采用
bu_name || '|' || org_unit_name组合,避免不同BU下的同名ORG被视为同一节点; - 第三层节点ID采用
bu_name || '|' || org_unit_name || '|' || dept_name组合,唯一标识每个DEPT节点。
- 第二层节点ID采用
- 父节点关联正确性:
- 第三层节点的PID使用第二层的组合ID,而非仅
ORG_UNIT_NAME,保证DEPT只挂载到所属的BU+ORG节点下,不会跨BU关联。
- 第三层节点的PID使用第二层的组合ID,而非仅
- 简化冗余逻辑:移除原SQL中嵌套的冗余子查询(带count(1)的统计无需保留),直接从原表分组获取维度值。
- 修复语法错误:清除SELECT子句中多余的逗号,确保SQL可正常执行。
验证效果
执行修正后的SQL后,树形结构会按预期显示:
A_BU AX_ORG A1_DEPT B_BU AY_ORG A1_DEPT -- 注:根据你提供的INSERT语句,B_BU对应的DEPT是A1_DEPT,若需显示A2_DEPT需修正INSERT数据为(2,'B_BU','AY_ORG','A2_DEPT') C_BU CX_ORG A3_DEPT A4_DEPT
内容的提问来源于stack exchange,提问作者Velocity
相关产品推荐
相关产品推荐

