递归查询讲义.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
递归查询讲义

树形(递归)查询的使用方法 oracle中的select语句可以用START WITH...子句实现递归查询是结构化查询中用到的,其基本语法是: select ... from tablename start with cond1 Connect By cond2 where cond3; 简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段: id,parentid那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。 用上述语法的查询可以取得这棵树的所有记录。 其中COND1是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。 COND2是连接条件,其中用表示上一条记录,比如 ID=PRAENTID就是说上一条记录的ID是本条记录的PRAENTID,即本记录的父亲是上一条记录。 COND3是过滤条件,用于对返回的所有记录进行过滤。和START WITH关键字是可选项 简单地说 START WITH 代表你要开始遍历的的节点,CONNECT BY PRIOR 是标示父子关系的对应START WITH 关键字用于设定切入点开始遍历的的节点START WITH子句为可选项,用来标识哪个节点作为查找树型结构的根节点。若该子句被省略,则表示所有满足查询条件的行作为根节点。CONNECT BY子句说明每行数据将是按层次顺序检索,并规定将表中的数据连入树型结构的关系中。关键字用于设定节点间的父子关系PRIOR运算符在侧侧表示父节点,一侧表示子节点从而确定查找树结构是的顺序是自顶向下还是自底向上。开始遍历的的节点PRIOR在CONNECT BY子句中等号的前面时,则从根节点到叶节点的顺序检索即由父节点向子节点方向通过树结构select level,deptid,sup_deptid from pec.hrs009t0 start with deptid connect by prior deptid=sup_deptid 以和是开始遍历的的节点PIROR运算符CONNECT BY 子句中等号的后面时,则从叶节点到根节点的顺序检索,即由子节点向父节点方向通过树结构。select level,deptid,sup_deptid from pec.hrs009t0 start with deptid connect by prior sup_deptid=deptid 以和是开始遍历的的节点select level,deptid,sup_deptid from pec.hrs009t0 start with sup_deptid connect by prior deptid=sup_deptid 以和是开始遍历的的节点select level,deptid,sup_deptid from pec.hrs009t0 start with SUP_deptid connect by prior sup_deptid=deptid Oracle的伪列Level,它主要是对于层次使用,根节点是1,是23… 使用LEVEL改变查询结果的显示形式由于不同行处于不同的节点位置,具有不同的LEVEL值,因此填充的空格数将根据各自的层号确定SELECT B.DEPTNO,RPAD( ,LEVEL*12) ||B.DEPTNM NAME FROM PEC.HRS009T0 A,PEC.HRS006T0 B WHERE A.DEPTID=B.DEPTID START WITH A.DEPTID CONNECT BY PRIOR A.DEPTID=SUP_DEPTID; CONNECT BY 与分析函数的应用 例一: select a.*,seq-depth+1 tt from pec.hrs009m0 a where deptid select ROW_NUMBER() over (order by depth desc) tt,a.* from pec.hrs009m0 a where deptid select rank() over (order by depth desc) tt,a.* from pec.hrs009m0 a where deptid 例二: 样式一 LEVEL DEPTID SUP_DEPTID 100

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档