树形结构的进一步理解
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脚本可能用于在数据库中创建表、插入数据、更新记录或删除记录,与树形结构的增删改查功能相呼应。 7. **刷新功能**: - 刷新功能确保用户看到的树形结构始终与数据库中的数据同步。这可能涉及到...
Oracle数据库在处理树形结构数据时提供了强大的递归查询功能,这种特性对于组织结构、产品分类、层级菜单等场景的应用非常广泛。递归树形结构查询主要依赖于`CONNECT BY`和`PRIOR`关键字,它们允许我们构建复杂的...
在IT行业中,构建树形结构的数据展示是一种常见的需求,特别是在Web应用中,如导航菜单、组织架构图等。...通过深入研究和理解该项目,开发者不仅可以掌握树形结构的实现原理,还能进一步提升在Web开发中的实战能力。
通过`树形结构.sql`文件,你可以进一步研究和实践这些示例,加深对MSSQL查询树形结构的理解。 总结,理解和掌握在MSSQL中查询树形结构的方法,对于开发和维护涉及层级关系的数据库应用至关重要。无论是正查还是反查...
在"树形结构报表"中,Cognos展现了一种层次化的数据视图,这种视图允许用户以类似目录或文件系统的方式浏览和交互数据。下面将详细介绍Cognos树形结构报表的相关知识点。 1. **树形结构**:在Cognos报表中,树形...
在IT行业中,C#和.NET框架是开发桌面应用、Web应用和移动应用的重要工具,而树形结构作为数据结构的基础,对于理解和优化程序性能至关重要。本文将深入探讨C#和.NET环境下的树形结构实现,以及如何利用这些知识来...
Oracle SQL树形结构查询是一种在数据库中处理层级数据的有效方法,特别是在具有层级关系的数据表中,如组织架构、部门树或文件系统等。Oracle SQL 提供了 `START WITH...CONNECT BY PRIOR` 语句来实现递归查询,使得...
4. **创建树形框结构**:在易语言中,创建一个树形控件,并逐个添加节点。根节点通常代表顶级分类,子节点则代表二级或更低级别的分类。 5. **动态加载数据**:将解析出的分类信息插入到对应的树形框节点中,确保每...
"asp 树形 论坛"的标签进一步明确了这个资源的主要技术特点,即使用ASP编程语言来构建一个具有树形结构的论坛系统。这样的论坛可能包含以下关键知识点: 1. **ASP基础**:理解ASP的基础语法,包括响应对象、请求...
"根据数据库表结构自动生成产品结构树"这一技术,其核心是将数据库中的BOM数据转换成可视化、层次化的结构,以树形图的方式展示出来。这涉及到数据库查询、数据处理和图形化表示等多个方面的知识。 首先,我们需要...
首先,我们需要理解SQL在构建树形结构中的作用。在关系型数据库中,通常使用自连接来表示层级关系,比如一个节点可能有多个子节点,而这些子节点又可以有自己的子节点,形成无限级联。创建这样的表结构时,我们通常...
本文介绍了如何在 C# 中实现从数据库加载树形结构数据的基本方法,包括数据库连接、数据集操作以及树形结构的构建过程。通过理解和应用这些核心知识点,开发者可以更好地处理各种涉及层次结构的数据需求,提高应用...
通过分析这些文件,可以进一步理解控件的实现细节。 总结来说,使用JavaScript构建的树形展开控件能够提供无刷新的用户体验,通过Ajax与Java后端进行交互,并能适应.NET平台。配合SQL数据库,可以动态地加载和展示...
"动态网站制作指南.url"和"程序说明.url"可能是指向进一步学习资源的链接,帮助开发者深入理解ASP和JavaScript在构建动态网站中的应用,以及具体到这个树形菜单的实现方法。 在实际项目中,这样的树形菜单可以用于...
jQuery TreeTable是一款轻量级的JavaScript插件,它能将HTML表格转换为可折叠的树形结构,使得复杂的数据层次关系得以清晰地呈现。通过添加特定的CSS类和属性,我们可以轻松地控制表格节点的展开与折叠。 **二、SSM...
层次模型以树形结构表示数据,适用于1:N联系,但仅能处理这种单一联系,导致查询和更新操作复杂。网状模型则允许更灵活的M:N联系,但同样增加了编程难度。关系模型,也就是最广泛使用的SQL数据库,使用二维表格结构...
4. `father node sumup.sql`:这个名字可能是某种特定查询或过程的描述,比如树形结构中的父节点总结,可能涉及递归查询或者连接操作来查找每个记录的父级。 5. `tablespace_check.sql`:这可能是一个SQL脚本,用于...
【标题】中的“无限级树形(三层开发)源码_classmanage”指的...总的来说,这个源码包提供了一个学习和理解ASP.NET中无限级树形结构和三层架构设计的实例,对于提升ASP.NET开发技能和了解企业级应用开发流程非常有价值。
"jsp树形菜单"是一种常见的网页元素,用于展示层级关系的数据,如网站导航、文件目录或组织结构。本项目利用JavaServer Pages (JSP) 技术,结合MySQL数据库来创建一个可自定义的树形菜单,而且其代码设计灵活,可以...