ORACLE是一个关系数据库管理系统,它用表的形式组织数据,在某些表中的数据还呈现出树型 结构的联系。
例如有如下案例:
数据为节选,字段值含义分别为 税务机构代码、税务机构名称、上级税务机构代码,税务机构级别
sj_swjg_dm为空即根节点的排在第一个,仔细观察 上图是树结构查询结果,可能不太直观,看下图就清楚了
1. 树结构的描述
![](https://i-blog.csdnimg.cn/blog_migrate/7e98a49062944e15630d68a01844e83a.png)
数据为节选,字段值含义分别为 税务机构代码、税务机构名称、上级税务机构代码,税务机构级别
select * from extern_dm_swjg查询的时候默认顺序就是上面的顺序,可以看出是混乱的并没有特殊结构特征。
而希望的结果如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/2f83869f1063aa2f23cce444e1f3b571.png)
sj_swjg_dm为空即根节点的排在第一个,仔细观察 上图是树结构查询结果,可能不太直观,看下图就清楚了
![](https://i-blog.csdnimg.cn/blog_migrate/7a5755597f409916e49c8db7d44f30bc.png)
1. 树结构的描述
树结构的数据存放在表中,数据之间的层次关系即父子关系,通过表中的列与列间的关系来描述,
通过每个节点的父节点,就可以确定整个树结构。
在SELECT命令中使用CONNECT BY和START WITH 子句可以查询表中的树型结构关系。 其命令格式如下:
SELECT ...
CONNECT BY {PRIOR 列名1=列名2|列名1=PRIOR 列名2}
[START WITH]...
其中:
CONNECT BY子句说明每行数据将是按层次顺序检索,并规定将表中的数据连入树型结构的关系中。PRIORY运算符必须放置在连接关系的两列中某一个的前面。对于节点间的父子关系,PRIOR运算符在的一侧表示父节点,在另一侧表示子节点,
从而确定查找树结构是的顺序是自顶向下还是自底向上。
START WITH 子句为可选项,用来标识哪个节点作为查找树型结构的根节点。若该子句被省略,则表示所有满足查询条件的行作为根节点