Oracle树查询总结

作者: 云计算机网 分类: 中国 发布时间: 2016-12-10 23:46

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

1 CREATE TABLE FLFL   2 (   3 ID NUMBER NOT NULL,   4 MC NVARCHAR2(20),   5 FLJB NUMBER,   6 SJFLID NUMBER   7 )  

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

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

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

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

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

1 SELECT * FROM flfl WHERE sjflid =0;

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

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

1 SELECT * FROM flfl WHERE sjflid = 819459;

这个SQL语句可以查出父节点为819454的全部子节点。

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

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

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

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

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

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

5.查找一个节点的所有直属父节点(祖宗)。

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

这里查找的就是ID为6758的所有直属父节点,打个比方就是找到一个人的父亲、祖父等。但是值得注意的是这个查询出来的结果的顺序是先列出子类节点再列出父类节点,姑且认为是个倒序吧。

上面列出两个树型查询方式,第3条语句和第5条语句,这两条语句之间的区别在于prior关键字的位置不同,所以决定了查询的方式不同。 当sjflid = PRIOR ID时,数据库会根据当前的ID迭代出sjflid与该ID相同的记录,所以查询的结果是迭代出了所有的子类记录;而PRIOR ID = sjflid时,数据库会跟据当前的sjflid来迭代出与当前的sjflid相同的id的记录,所以查询出来的结果就是所有的父类结果。

  • 金蝶KIS账簿查询流程

    如果还没有记账能不能查到相关的信息呢?答案是可以的,记账前可以通过临时查询账簿数据得到该信息,条件是选中包含未记账凭证选项。小编为大家分享金蝶KIS账簿查询流程:

    1.进入金蝶KIS软件主界面,点击账务处理,在软件右侧出现账簿查询如下所示。

    2.需要查询总账、明细帐时,点击输入查询条件,即可输出查询结果。

    3.查询多栏帐时,点击多栏明细账,出现用户增加多栏帐界面;点击增加,选中需要设置多栏帐的会计科目。如果有明细或者有辅助核算项目的,可通过自动编排调出该科目明细项目形成栏目,形成该科目多栏帐,进入即可进行查询;没有明细或者辅助核算项目的,可在科目代码栏目名称中增加栏目。需要注意的是,新增的科目代码和栏目必须是科目表中存在的会计科目(一般此种情况不常用)。

    4.金蝶KIS标准版现金与银行存款日记账在出纳管理模块中查询。其他帐表查询过程基本相同,在此不再详细介绍。

    注:账簿查询是对已经形成的正式或非正式账簿数据进行输出显示的操作,一般可分为按照查询的方式和按照查询的内容。

  • 相关推荐:

  • 金蝶KIS账簿查询流程
  • SQL教程:如何编写更佳的
  • linux下rpm命令:查询命令
  • 外网/内网本机IP地址查询
  • 支付宝蚂蚁森林合种树方
  • 支付宝怎么查询社保余额
  • 微信怎么查询成绩查询方
  • 微信王卡助手查询流量方
  • 微信怎么查询腾讯信用分
  • 支付宝电子发票查询方法
  • 网站内容禁止违规转载,转载授权联系中国云计算网