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

如何在Oracle APEX 21中将父子表转换为树形区域?

解决方案:构建Oracle APEX 21树形区域所需的父子结构数据

核心要求

Oracle APEX树形区域的数据源必须包含三个核心字段:

  • 全局唯一ID:区分每个节点
  • 父节点ID(PARENT_ID):建立层级关联,根节点的该字段设为NULL或0
  • 节点显示文本(TEXT):展示节点的可读信息

构造符合要求的SQL查询

结合你的订单与订单行表结构,用UNION ALL合并两层节点数据,同时保证ID全局唯一:

-- 根节点:订单数据
SELECT 
    'O_' || o.Id AS ID,
    NULL AS PARENT_ID,
    '订单号: ' || o.Order_number || ' (' || TO_CHAR(o.Order_date, 'YYYY-MM-DD') || ')' AS TEXT,
    o.Id AS ORDER_ID,
    NULL AS LINE_ID,
    NULL AS ITEM_NUMBER,
    NULL AS QTY
FROM orders o

UNION ALL

-- 子节点:订单行数据
SELECT 
    'L_' || l.Line_id AS ID,
    'O_' || l.Order_id AS PARENT_ID,
    '物料号: ' || l.Item_number || ' | 数量: ' || l.Qty AS TEXT,
    l.Order_id AS ORDER_ID,
    l.Line_id AS LINE_ID,
    l.Item_number AS ITEM_NUMBER,
    l.Qty AS QTY
FROM order_lines l
ORDER BY ORDER_ID, LINE_ID;

关键说明

  • 'O_' || o.Id与'L_' || l.Line_id:通过前缀区分订单和订单行节点,避免不同层级ID冲突
  • 根节点PARENT_ID设为NULL,APEX会自动识别为顶层节点
  • TEXT字段可根据业务需求自定义格式,提升节点可读性
  • 保留ORDER_ID、LINE_ID等字段,方便后续添加节点交互逻辑(如跳转详情页)

APEX树形区域配置步骤

  1. 在目标页面创建树形区域
  2. 将上述SQL设置为区域的数据源
  3. 在树形属性中指定:
    • ID列:选择查询结果中的ID字段
    • 父ID列:选择PARENT_ID字段
    • 文本列:选择TEXT字段
  4. 按需配置额外属性(如默认展开层级、节点图标、点击事件等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 00:45:04