最近在做公司的项目中遇到一个问题,多级级联导航菜单,虽然只有三级目录,但<li>中嵌套<ul>,数据库表结构如下:

CREATE TABLE FLFL
(
ID NUMBER NOT NULL,
MC NVARCHAR2(20),
FLJB NUMBER,
SJFLID NUMBER
)

很常见的表结构,包括自身ID和父ID,对于这种我们已不陌生,在写树状菜单的时候经常见到这样的数据结构,但是我们一般写树状菜单的时候都会用到前端的框架比如zTree或者treeView等,我们只要在后台查出所有的数据,返回List到前台前台会根据id和superId自动解析成树状结构。但如果不用这些框架的话,就需要我们自己在后台组装成树结构返回前台做处理。那么后台如何组装树结构呢,比如要实现如下功能:

这个时候就要用到数据库的树查询方法。树查询返回的数据结构就是查出根节点下的全部子子孙孙的节点以节点包含节点的方式展现。

Oracle树查询的主要语法:select...start with... connect by ...prior 。

我们以上述FLFL表为例进行讲解.

1. 查找树中的所有顶级父节点(辈份最长的人)。

SELECT * FROM flfl WHERE sjflid =0;

以上查询中所有的根节点的上级Id也就是父Id都为0,这个在插入数据的时候就可以进行设定。根节点以父Id为0进行标识。

2.查找一个节点的直属子节点(所有儿子)。

SELECT * FROM flfl WHERE sjflid = 819459;

3.查找一个节点的所有 直属子节点(所有后代)。

SELECT * FROM flfl START WITH ID = 819459 CONNECT BY sjflid = PRIOR ID; 

这个查找的是ID为819459的节点下的所有直属子类节点,包括子辈的和孙子辈的所有直属节点。

4.查找一个节点的直属父节点(父亲)。

 SELECT b.* FROM flfl a JOIN flfl b ON a.sjflid = b.ID WHERE a.ID = 6758; 

这个找到的是ID为6758的节点的直属父节点,要用到同一张表的关联了。

参照来源:https://www.cnblogs.com/ao-xiang/p/5790342.html

转载于:https://www.cnblogs.com/xianfengzhike/p/9210264.html

Oracle树查询总结相关推荐

  1. oracle 操作树大全,oracle树查询语句

    oracle树查询语句 2020-01-13 01:01:01 79 格式: SELECT column FROM table_name START WITH column=value CONNECT ...

  2. Oracle树查询及相关函数

    Oracle树查询的最重要的就是select...start with... connect by ...prior 语法了.依托于该语法,我们可以将一个表形结构的中以树的顺序列出来.在下面列述了Or ...

  3. Oracle树查询(查询所有子节点,父节点等等)_转载

    Oracle树查询(查询所有子节点,父节点等等) 转载 2016年01月14日 10:11:55 Oracle树查询的最重要的就是select...start with... connect by . ...

  4. oracle数据库怎么进行树查询,oracle树查询的实现

    oracle树查询的实现 来自于网络: oracle树查询又称为递归查询,是最常用的查询方法之一,下文对oracle树查询作了详细的阐述,希望可以让您对oracle树查询有更深的认识. oracle中 ...

  5. oracle 树查询语句,oracle 树查询 语句

    格式: SELECT column FROM table_name START WITH column=value CONNECT BY PRIOR 父主键=子外键 select lpad(' ',4 ...

  6. oracle查询数据库的函数,Oracle:树查询及有关函数

    Oracle:树查询及相关函数 Oracle树查询的最重要的就是select...start with... connect by ...prior 语法了.依托于该语法,我们可以将一个表形结构的中以 ...

  7. Oracle 树操作(select…start with…connect by…prior)

    oracle树查询的最重要的就是select-start with-connect by-prior语法了.依托于该语法,我们可以将一个表形结构的以树的顺序列出来.在下面列述了oracle中树型查询的 ...

  8. oracle树状结构递归,Oracle:递归查询(树形结构数据)

    Oracle树形结构数据-相关知识总结 Oracle树形结构数据--基本知识 1.数据组成 2.基本查询 2.1.查询某节点及该节点下的所有子孙节点 SELECT   *      FROM QIAN ...

  9. oracle 树 向上查询,Oracle中显示树结构查询语句【子查父和父查子】

    实际开发中可能会用到树状查询结果,语句如下: select ID, LPAD(DEPT_NAME, LENGTH(DEPT_NAME) + (LEVEL * 2), ' ') dept_name fr ...

最新文章

  1. Docker(2):使用Dockerfile创建支持SSH服务的镜像
  2. 图形工作站计算机大全,图形工作站价格怎么样 图形工作站报价大集锦【图文】...
  3. 打印某个进程下的所有线程--Linux环境
  4. LeetCode 349. 两个数组的交集(哈希)
  5. 2019年终总结与新年重磅福利
  6. git status清空_本地删除文件后,git status会显示红色的那个文件。
  7. 网络编程(一)基础知识
  8. [ruby on rails] 跟我学之(7)创建数据
  9. springmvc重定向到另一个项目_springmvc怎么重定向,从一个controller跳到另外一个controller...
  10. Scrum电子看板工具
  11. memcached安装和使用
  12. express入门学习(一)
  13. 使用计算机制图的心得,学习cad制图心得体会
  14. 【异构图->精读】Heterogeneous Graph Attention Network
  15. Python遥感开发之GDAL读写遥感影像
  16. [ZZ]为什么选择傲游
  17. 恶意代码逆向静态分析之键盘记录(键盘钩子)以及代码实现 有手就行
  18. 如何清除PDF中的水印?PDF删除水印的方法
  19. peel在Linux生成excel,zplane -
  20. HTML5前端视频_Vue项目实战《硅谷外卖》-张晓飞-专题视频课程

热门文章

  1. python爬取网页上的特定链接_python3下scrapy爬虫(第三卷:初步抓取网页内容之抓取网页里的指定数据)...
  2. linux分区合并不损坏系统,一次Linux磁盘损坏导致系统不可用恢复实例
  3. java bytebuffer 大小,bytebuffer 获取长度
  4. 学习深度网络需要直观的感知
  5. 信标节能电路模块第二版本调试-无线充电-2021-3-21
  6. 第十六届全国大学生智能汽车竞赛 英飞凌芯片申请情况
  7. 更换紧凑型荧光灯管过程
  8. 机器学习 python_送书 | 深入浅出Python机器学习
  9. java 使用http2.0_【Java】okhttp3如何发送http2请求?
  10. 智能调温需要哪些计算机知识,一种智能调温的计算机用鼠标的制作方法