insert into TREETEST (ID, PID, NAME) values ('1', null, '山东省');
insert into TREETEST (ID, PID, NAME) values ('2', '1', '青岛市');
insert into TREETEST (ID, PID, NAME) values ('3', '1', '烟台市');
insert into TREETEST (ID, PID, NAME) values ('4', null, '河南省');
insert into TREETEST (ID, PID, NAME) values ('5', null, '河北省');
insert into TREETEST (ID, PID, NAME) values ('6', '2', '市南区');
insert into TREETEST (ID, PID, NAME) values ('7', '2', '市北区');
insert into TREETEST (ID, PID, NAME) values ('8', '2', '即墨市');
复制代码
那对于树状结构如何查询呢?Oracle提供递归查询的方式进行查询,基本语法如下:
SELECT [Column]…..
FEOM [Table]
WHERE Conditional1
START WITH Conditional2
CONNECT BY PRIOR Conditional3
ORDER BY [Column]
说明:条件1---过滤条件,对全部返回的记录进行过滤。
条件2---根节点的限定条件,固然也可以放宽权限得到多个根节点,也就是获取多个树
条件3---链接条件,目的就是给出父子之间的关系是什么,根据这个关系进行递归查询(在上述表中就是ID=PID)
排序---对全部返回记录进行排序
下面我们结合具体实例来看:
1、查询山东省下面的所有子节点