`
y806839048
  • 浏览: 1126317 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

树形结构sql的进一步理解

 
阅读更多

树形结构的进一步理解

connect by...start with...的执行原理可以用以下一段程序的执行以及对存储过程RECURSE()的调用来说明: 

 

/* 遍历表中的每条记录,对比是否满足start with后的条件,如果不满足则继续下一条, 

如果满足则以该记录为根节点,然后调用RECURSE()递归寻找该节点下的子节点, 

如此循环直到遍历完整个表的所有记录 。*/ 

 

http://www.cnblogs.com/baiyixianzi/archive/2012/08/30/plsql12.html

 

是否满足start with中的,满足则以此为根节点通过connect by 中的规则组织成树

 select * from (select * from 

(   

     select distinct(t.id) id, t.name name,t.parentid  parentid ,0 leave1,'1' leave from opm_menufolder t left join  opm_menuitem oo on t.id=oo.menufolderid where oo.id in (select MenuItemId from OPM_ROLELIMIT where ROLEID='ff8080814dc41486014dcd88e7830030') or t.parentid is null

   union all select distinct(o.id) id, o.name name,o.menufolderid ,o.level1 leave1,'2' leave  from opm_menuitem o  where o.id in (select MenuItemId from OPM_ROLELIMIT where ROLEID='ff8080814dc41486014dcd88e7830030') 

   union all select distinct(l.id) id, l.name name,l.menuitemid ,l.level1 leave1,'3' leave  from opm_menuitemlimit l where l.id in (select MENUITEMLIMITID from OPM_ROLELIMIT where ROLEID='ff8080814dc41486014dcd88e7830030')

  

start with parentid is null connect by prior id=parentid ORDER SIBLINGS BY parentid) 

 

 

SELECT DISTINCT D.*, C.URL_ADDRESS

  FROM TB_POWER_GROUP D LEFT JOIN (SELECT A.GROUP_KEY, B.URL_ADDRESS

                                     FROM TB_POWER_GROUPRELURL A,

                                          TB_POWER_URL         B

                                    WHERE A.URL_KEY = B.URL_KEY) C ON D.GROUP_KEY = C.GROUP_KEY

                                    WHERE FLAG =#{current_trade_kind}  START WITH D.GROUP_KEY IN

                                    (SELECT GROUP_KEY FROM TB_CUS_FIRMRELGROUP WHERE CUSTOMER_KEY = #{CUSTOMER_KEY})//以当前用户的组key作为根

                                     CONNECT BY PRIOR  PARENT_KEY = D.GROUP_KEY ORDER BY D.SORT_NUM //通过父子key相等组织树,左右没有关系

 

SELECT DISTINCT A.*, C.URL_ADDRESS

  FROM TB_POWER_GROUP A LEFT JOIN (SELECT A.GROUP_KEY, B.URL_ADDRESS

                                     FROM TB_POWER_GROUPRELURL A,

                                          TB_POWER_URL         B

                                    WHERE A.URL_KEY = B.URL_KEY) C ON A.GROUP_KEY = C.GROUP_KEY

 START WITH A.GROUP_KEY IN

            (SELECT DISTINCT T2.GROUP_KEY

               FROM TB_POWER_GROUP         T2,

                    TB_POWER_ROLESRELGROUP T4,

                    TB_POWER_USERRELROLES  T5

              WHERE T4.ROLES_KEY = T5.ROLES_KEY AND

                    T5.CUS_USER_KEY = :CUS_USER_KEY AND

                    T2.GROUP_KEY = T4.GROUP_KEY AND

                    T2.FLAG = #{current_trade_kind})

 

CONNECT BY A.PARENT_KEY = PRIOR A.GROUP_KEY and

           a.FLAG = #{current_trade_kind}

 ORDER BY A.SORT_NUM

分享到:
评论

相关推荐

    树形结构(增删改查刷新等功能附SQL脚本)

    在这个项目中,SQL脚本可能用于在数据库中创建表、插入数据、更新记录或删除记录,与树形结构的增删改查功能相呼应。 7. **刷新功能**: - 刷新功能确保用户看到的树形结构始终与数据库中的数据同步。这可能涉及到...

    Oracle递归树形结构查询功能

    Oracle数据库在处理树形结构数据时提供了强大的递归查询功能,这种特性对于组织结构、产品分类、层级菜单等场景的应用非常广泛。递归树形结构查询主要依赖于`CONNECT BY`和`PRIOR`关键字,它们允许我们构建复杂的...

    BS实现树形结构(jsp+mysql数据库+设计文档)

    在IT行业中,构建树形结构的数据展示是一种常见的需求,特别是在Web应用中,如导航菜单、组织架构图等。...通过深入研究和理解该项目,开发者不仅可以掌握树形结构的实现原理,还能进一步提升在Web开发中的实战能力。

    mssql查询树形结构

    通过`树形结构.sql`文件,你可以进一步研究和实践这些示例,加深对MSSQL查询树形结构的理解。 总结,理解和掌握在MSSQL中查询树形结构的方法,对于开发和维护涉及层级关系的数据库应用至关重要。无论是正查还是反查...

    cognos 树形结构报表

    在"树形结构报表"中,Cognos展现了一种层次化的数据视图,这种视图允许用户以类似目录或文件系统的方式浏览和交互数据。下面将详细介绍Cognos树形结构报表的相关知识点。 1. **树形结构**:在Cognos报表中,树形...

    C#,.NET专科知识库源码 树形结构,初学研究的福音

    在IT行业中,C#和.NET框架是开发桌面应用、Web应用和移动应用的重要工具,而树形结构作为数据结构的基础,对于理解和优化程序性能至关重要。本文将深入探讨C#和.NET环境下的树形结构实现,以及如何利用这些知识来...

    Oracle SQL树形结构查询

    Oracle SQL树形结构查询是一种在数据库中处理层级数据的有效方法,特别是在具有层级关系的数据表中,如组织架构、部门树或文件系统等。Oracle SQL 提供了 `START WITH...CONNECT BY PRIOR` 语句来实现递归查询,使得...

    易语言源码数据库载入分类到树形框.rar

    4. **创建树形框结构**:在易语言中,创建一个树形控件,并逐个添加节点。根节点通常代表顶级分类,子节点则代表二级或更低级别的分类。 5. **动态加载数据**:将解析出的分类信息插入到对应的树形框节点中,确保每...

    asp树形论坛亲测绝对可用

    "asp 树形 论坛"的标签进一步明确了这个资源的主要技术特点,即使用ASP编程语言来构建一个具有树形结构的论坛系统。这样的论坛可能包含以下关键知识点: 1. **ASP基础**:理解ASP的基础语法,包括响应对象、请求...

    根据数据库表结构自动生成产品结构树

    "根据数据库表结构自动生成产品结构树"这一技术,其核心是将数据库中的BOM数据转换成可视化、层次化的结构,以树形图的方式展示出来。这涉及到数据库查询、数据处理和图形化表示等多个方面的知识。 首先,我们需要...

    读取无限树(SQL+C#)

    首先,我们需要理解SQL在构建树形结构中的作用。在关系型数据库中,通常使用自连接来表示层级关系,比如一个节点可能有多个子节点,而这些子节点又可以有自己的子节点,形成无限级联。创建这样的表结构时,我们通常...

    树结构加载

    本文介绍了如何在 C# 中实现从数据库加载树形结构数据的基本方法,包括数据库连接、数据集操作以及树形结构的构建过程。通过理解和应用这些核心知识点,开发者可以更好地处理各种涉及层次结构的数据需求,提高应用...

    javascript 做的 树形展开控件

    通过分析这些文件,可以进一步理解控件的实现细节。 总结来说,使用JavaScript构建的树形展开控件能够提供无刷新的用户体验,通过Ajax与Java后端进行交互,并能适应.NET平台。配合SQL数据库,可以动态地加载和展示...

    asp+js构建树形菜单

    "动态网站制作指南.url"和"程序说明.url"可能是指向进一步学习资源的链接,帮助开发者深入理解ASP和JavaScript在构建动态网站中的应用,以及具体到这个树形菜单的实现方法。 在实际项目中,这样的树形菜单可以用于...

    jqueryTreeTable+ajax(构建树形表格)

    jQuery TreeTable是一款轻量级的JavaScript插件,它能将HTML表格转换为可折叠的树形结构,使得复杂的数据层次关系得以清晰地呈现。通过添加特定的CSS类和属性,我们可以轻松地控制表格节点的展开与折叠。 **二、SSM...

    SQL疑难解决,问题提高SQL学习使用的效率

    层次模型以树形结构表示数据,适用于1:N联系,但仅能处理这种单一联系,导致查询和更新操作复杂。网状模型则允许更灵活的M:N联系,但同样增加了编程难度。关系模型,也就是最广泛使用的SQL数据库,使用二维表格结构...

    sql of aia study

    4. `father node sumup.sql`:这个名字可能是某种特定查询或过程的描述,比如树形结构中的父节点总结,可能涉及递归查询或者连接操作来查找每个记录的父级。 5. `tablespace_check.sql`:这可能是一个SQL脚本,用于...

    [其他类别]无限级树形(三层开发)源码_classmanage(ASP.NET源码).rar

    【标题】中的“无限级树形(三层开发)源码_classmanage”指的...总的来说,这个源码包提供了一个学习和理解ASP.NET中无限级树形结构和三层架构设计的实例,对于提升ASP.NET开发技能和了解企业级应用开发流程非常有价值。

    jsp树形菜单

    "jsp树形菜单"是一种常见的网页元素,用于展示层级关系的数据,如网站导航、文件目录或组织结构。本项目利用JavaServer Pages (JSP) 技术,结合MySQL数据库来创建一个可自定义的树形菜单,而且其代码设计灵活,可以...

Global site tag (gtag.js) - Google Analytics