`
zhangzhiya
  • 浏览: 23956 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类

关于在Oracle和MySql中实现树形菜单方法探讨

阅读更多
select t.*, t.SCOPE as sc from DICT_TREE t  connect by prior t.DICT_TREE_ID=t.UP_DICT_ID start with t.UP_DICT_ID=82


以上查询语句返回的结果集正好是树形结构的,对生成树形菜单非常方便,不用再对数据进行整理排序,直接将结果集循环打印即可。

在查询时若想对某个节点下的子节点进行排序可在查询语句末尾加上如下代码
 order sibling by t.ORDER_NUM

这样就能实现对子节点进行排序了。

以上方法构造树形菜单对于使用oracle数据库的应用来说非常的方便,但如果是使用mysql或其他数据库的话,就不行了。据我所知mysql好象没有类似于connect by prior这样的递归查询语句。前段时间做的一个使用mysql数据的项目在维护树形菜单是通过维护一个rankcode的字段实现结果集的树状排序的。以下是我的实现方法:
每级节点都使用两位数字来标识,子节点加上父节点的rankcode
一级节点的rankcode为两位数字:01~99
二级节点的rankcode为四位数字:0101~0199、0201~0299、0n~0n99
例如:
  菜单名   rankcode值
一级菜单A     01
   二级菜单a  0101
   二级菜单b  0102
一级菜单B     02
   二级菜单c  0201
   二级菜单d  0202
一级菜单C     03
   二级菜单d  0301
      三级菜单1 030101
这样通过对rankcode进行排序,返回的结果集也是树形的。在菜单的管理中需要对rankcode进行维护。还有个弊端就是每级节点数量有限制,除非将每级节点的标识增加到3位数字。
我是使用了这么一个笨方法。。希望能在这抛砖引玉,引来更好的更方便的实现方法:)

1
0
分享到:
评论
1 楼 xwq18 2010-10-31  
 

相关推荐

    递归查询菜单树,支持mysql,oracle

    这里,我们将深入探讨如何使用递归查询来构建菜单树,并特别关注在MySQL和Oracle这两种广泛使用的数据库系统中的实现。 首先,我们要理解什么是递归查询。递归查询是一种在数据库中处理层次数据的方法,它通过自身...

    利用JQuery实现网页左侧树形菜单_MyTreeByJquery.rar

    在网页设计中,左侧树形菜单是一种常见的布局方式,它能有效地组织大量链接,提供层次清晰的导航体验。本项目“利用JQuery实现网页左侧树形菜单”旨在通过JQuery库,结合CSS样式和可能的Java后端技术,动态地从...

    数据库控制树形结构的生成

    7. **工具与库支持**:许多数据库系统如MySQL、PostgreSQL、Oracle等提供了内置的树形数据类型或函数,如Nested Sets Model、Materialized Path等,以及支持树操作的库,如Python的`sqlalchemy`和`pytree`,可以帮助...

    JSP与无限级分类树型菜单

    1. 数据存储:通常,这些分类数据会存储在数据库中,如MySQL或Oracle,每个分类可能有一个父分类ID,通过这个字段可以建立父子关系。 2. 数据获取:使用JDBC(Java Database Connectivity)来连接数据库,执行SQL...

    sql_函数实现三种父子递归

    在SQL中,递归函数是处理层次结构数据的有效方法,特别是在构建树形结构如菜单树或权限树时。本文将探讨如何使用SQL函数实现三种常见的递归查询:找到所有子节点、查找所有父节点以及面包屑导航数据。我们将通过一个...

    miniSQL VC6.0

    6. tree.cpp:可能涉及到了数据库对象(如表)的树形展示,方便用户直观地查看和管理数据库结构。 7. 其余的文件如Exception.cpp、SplitString.cpp等,分别处理异常处理和字符串分割等辅助功能。 在VC6.0环境下,...

    PLSQL Developer

    对象浏览器让你能以树形结构查看数据库中的所有对象,包括表、视图、索引、触发器、存储过程等。你可以直接从浏览器中选择对象进行编辑或执行,方便快捷。 6. **报表和图表** PLSQL Developer可以生成各种报表,...

    Swing 组件大全

    其次,Swing还提供了更复杂和功能强大的组件,例如JTable(表格)、JList(列表)、JTree(树形视图)和JTabbedPane(选项卡面板),使得开发者能够构建更为动态和交互性的应用。JTable允许用户显示和编辑二维数据,...

    ExtJS图书管理系统

    ExtJS是一个用于构建富客户端Web应用的JavaScript库,它提供了大量的预定义组件,如表格、表单、树形视图、菜单、对话框等,极大地简化了前端界面的开发。这些组件具有高度可定制性,能够满足各种复杂的交互需求。在...

    特殊SQL 看看就知道了

    5. **递归查询与WITH子句**:`WITH RECURSIVE`语句可以实现递归查询,特别适用于处理层次结构数据,如组织结构、层级菜单或树形数据。 6. **索引和优化**:特殊SQL技巧还包括有效地利用索引,创建复合索引、唯一...

    jsp中国省市三级联动

    这些数据可以存储在数据库中,如MySQL、Oracle等,也可以硬编码在Java类或JSON文件中。为了实现联动效果,需要将这些数据结构化,比如用树形结构表示:国家包含多个省份,省份包含多个城市。 四、JSP实现 1. HTML和...

    PowerBuilder基础类库技术详解pdf

    PowerBuilder提供了丰富的窗口和控件库,包括按钮、文本框、列表框、树形视图等,开发者可以通过可视化设计工具快速构建用户界面。此外,还可以自定义控件,以满足特定的界面需求。 8. **网络和多线程** Power...

Global site tag (gtag.js) - Google Analytics