You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle APEX 22.1树形结构:无文件子节点时隐藏父节点方案咨询

解决方案:过滤无文件的树形分支

核心思路

仅保留存在有效Files数据的DEPT_NAME节点,以及这些节点对应的上级ORG_UNIT_NAME、BU_NAME路径。通过先筛选出有文件的记录,再基于这些记录构建树形结构,避免生成无意义的空分支。

修改后的树形结构查询SQL

SELECT CASE
         WHEN connect_by_isleaf = 1 THEN 0
         WHEN level = 1 THEN 1
         ELSE -1
       END AS status,
       LEVEL,
       child AS title,
       NULL AS icon,
       NULL as tooltip,
       'javascript:$s("P1_SELECTED_NODE","'
       || CASE LEVEL
            WHEN 1 THEN child
            WHEN 2 THEN parent || '|' || child
            WHEN 3 THEN CONNECT_BY_ROOT child || '|' || parent || '|' || child
          END 
       || '")' AS link 
FROM   (
  -- 先过滤出有有效文件的记录,再提取层级关系
  SELECT DISTINCT bu_name, parent, child, depth
  FROM   (
    SELECT d.*, NULL AS root 
    FROM DEPT_BU_LIST d 
    WHERE Files IS NOT NULL AND TRIM(Files) != '' -- 排除无文件的部门
  )
  UNPIVOT (
    (bu_name, parent, child) FOR depth IN (
      (bu_name, root, bu_name) AS 1,
      (bu_name, bu_name, org_unit_name) AS 2,
      (bu_name, org_unit_name, dept_name) AS 3
    )
  )
)
START WITH DEPTH = 1
CONNECT BY PRIOR child = parent
AND        PRIOR depth + 1 = depth
AND        PRIOR bu_name = bu_name
ORDER SIBLINGS BY child

关键修改说明

  1. 过滤无文件记录:在子查询中添加WHERE Files IS NOT NULL AND TRIM(Files) != '',确保只有包含有效文件的部门会被纳入树形结构的生成逻辑。
  2. 层级生成逻辑:UNPIVOT仅基于过滤后的记录生成三层节点,上级节点(BU、ORG)只会因为存在有文件的子部门而被保留。例如C_BU->CX_ORG下仅A4_DEPT有文件时,该路径会正常显示,而无文件的A3_DEPT不会出现在树中。
  3. 原有功能保留:节点的展开/折叠状态(status字段)、页面项赋值逻辑(link字段)保持不变,不影响原有交互功能。

交互式网格查询修正

原查询中存在字段名笔误(org_name应为表结构中的ORG_UNIT_NAME),同时建议添加文件过滤条件,避免返回空结果:

SELECT Files 
FROM dept_bu_list 
WHERE Files IS NOT NULL AND TRIM(Files) != ''
AND (:P1_BU_NAME IS NULL OR bu_name = :P1_BU_NAME) 
AND (:P1_ORG_NAME IS NULL OR org_unit_name = :P1_ORG_NAME) 
AND (:P1_DEPT_NAME IS NULL OR dept_name = :P1_DEPT_NAME) 

内容的提问来源于stack exchange,提问作者Velocity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 07:18:21