Oracle查询树形结构

Oracle查询树形结构

ID:40753661

大小:16.42 KB

页数:4页

时间:2019-08-07

Oracle查询树形结构_第1页
Oracle查询树形结构_第2页
Oracle查询树形结构_第3页
Oracle查询树形结构_第4页
资源描述:

《Oracle查询树形结构》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Oracle查询树形结构oracle中的select语句可以用STARTWITH...CONNECTBYPRIOR子句实现递归查询,connectby是结构化查询中用到的,其基本语法是:select*fromtablenamestartwithcond1connectbycond2wherecond3;简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:id,parentid那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。用上述语法的查询可以取得这棵树的所有记录。其中COND1是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就

2、是多棵树。COND2是连接条件,其中用PRIOR表示上一条记录,比如CONNECTBYPRIORID=PRAENTID就是说上一条记录的ID是本条记录的PRAENTID,即本记录的父亲是上一条记录。COND3是过滤条件,用于对返回的所有记录进行过滤。例:select*from(selectlevelasllevel,---层级节点l_department_id,---部门idvc_name,---部门名称CONNECT_BY_ROOTl_department_idasdepChildrenId,--下一级部门idCONNECT_BY_ROOTvc_nameasdepChil

3、drenName,--下一级部门名称l_type,--标记部门的分类3.管理平台SYS_CONNECT_BY_PATH(vc_name,'/')asdepnameshowfromsys_departmentconnectbyl_department_id=priorl_parent_department_id)txwheretx.l_type=3对于oracle进行简单树查询(递归查询)DEPTIDNUMBER部门idPAREDEPTIDNUMBER父部门id(所属部门id)NAMECHAR(40Byte)部门名称通过子节点向根节点追朔.select*frompersons

4、.deptstartwithdeptid=76connectbypriorparedeptid=deptid通过根节点遍历子节点.select*frompersons.deptstartwithparedeptid=0connectbypriordeptid=paredeptid可通过level关键字查询所在层次.selecta.*,levelfrompersons.deptastartwithparedeptid=0connectbypriordeptid=paredeptidPS:startwith后面所跟的就是就是递归的种子,也就是递归开始的地方;connectbyp

5、rior后面的字段顺序是有讲究的;若prior缺省:则只能查询到符合条件的起始行,并不进行递归查询;例:select*fromtablestartwithorg_id='HBHqfWGWPy'connectbypriororg_id=parent_id;简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:org_id,parent_id那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。用上述语法的查询可以取得这棵树的所有记录。其中:条件1是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。条件2是连接条件,其中用PRIO

6、R表示上一条记录,比如CONNECTBYPRIORorg_id=parent_id就是说上一条记录的org_id是本条记录的parent_id,即本记录的父亲是上一条记录。条件3是过滤条件,用于对返回的所有记录进行过滤。简单介绍如下:在扫描树结构表时,需要依此访问树结构的每个节点,一个节点只能访问一次,其访问的步骤如下:第一步:从根节点开始;第二步:访问该节点;第三步:判断该节点有无未被访问的子节点,若有,则转向它最左侧的未被访问的子节点,并执行第二步,否则执行第四步;第四步:若该节点为根节点,则访问完毕,否则执行第五步;第五步:返回到该节点的父节点,并执行第三步骤。总之:

7、扫描整个树结构的过程也即是中序遍历树的过程。1.树结构的描述树结构的数据存放在表中,数据之间的层次关系即父子关系,通过表中的列与列间的关系来描述,如EMP表中的EMPNO和MGR。EMPNO表示该雇员的编号,MGR表示领导该雇员的人的编号,即子节点的MGR值等于父节点的EMPNO值。在表的每一行中都有一个表示父节点的MGR(除根节点外),通过每个节点的父节点,就可以确定整个树结构。在SELECT命令中使用CONNECTBY和STARTWITH子句可以查询表中的树型结构关系。其命令格式如下:SELECT。。。CONN

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。