【发布时间】:2014-02-17 15:38:08
【问题描述】:
我有一个包含 4 级深度数据的简单树。这是 DDL 表
CREATE TABLE HIER_DEMO(
ID NUMBER,
LABEL VARCHAR2 (100),
PARENT_ID NUMBER)
层次结构从WITH ID = PARENT_ID 开始。级别数是固定的。它总是 4。我们在第 4 级的所有分支上都有叶子。因此,如果需要,我们还可以再添加 3 列代表祖先的 LABEL。
我需要构建一个查询
- 在任何层次结构级别的 LABEL 中搜索特定短语。例如
LABEL LIKE '%MAGIC_WORD%'。 - 返回层次结构节点下满足条件 1 的所有节点直到叶级。
- 此外,我们需要返回满足条件 1 的层次结构节点的所有祖先。
这是一个例子
INSERT INTO HIER_DEMO VALUES (1, 'Mike', 1);
INSERT INTO HIER_DEMO VALUES (2, 'Arthur', 2);
INSERT INTO HIER_DEMO VALUES (3, 'Alex', 1);
INSERT INTO HIER_DEMO VALUES (4, 'Suzanne', 1);
INSERT INTO HIER_DEMO VALUES (5, 'Brian', 3);
INSERT INTO HIER_DEMO VALUES (6, 'Rick', 3);
INSERT INTO HIER_DEMO VALUES (7, 'Patrick', 4);
INSERT INTO HIER_DEMO VALUES (8, 'Simone', 4);
INSERT INTO HIER_DEMO VALUES (9, 'Tim', 5);
INSERT INTO HIER_DEMO VALUES (10, 'Andrew', 5);
INSERT INTO HIER_DEMO VALUES (11, 'Sandy', 6);
INSERT INTO HIER_DEMO VALUES (12, 'Brian', 6);
INSERT INTO HIER_DEMO VALUES (13, 'Chris', 7);
INSERT INTO HIER_DEMO VALUES (14, 'Laure', 7);
INSERT INTO HIER_DEMO VALUES (15, 'Maureen', 8);
INSERT INTO HIER_DEMO VALUES (16, 'Andy', 8);
INSERT INTO HIER_DEMO VALUES (17, 'Al', 2);
INSERT INTO HIER_DEMO VALUES (18, 'John', 17);
INSERT INTO HIER_DEMO VALUES (19, 'Frank', 18);
INSERT INTO HIER_DEMO VALUES (20, 'Tim', 19);
我正在寻找在 LABEL 列中搜索“Brian”树的查询
查询应该返回这些数据
ID LABEL PARENT_ID
1 Mike 1
3 Alex 1
5 Brian 3
6 Rick 3
9 Tim 5
10 Andrew 5
12 Brian 6
有人可以帮助处理 Oracle 查询吗?我们使用的是 11.2 版本的 Oracle 数据库。
【问题讨论】: