度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 2111|回复: 4
打印 上一主题 下一主题

[原创] 读取树型所有下级或所有上级

[复制链接]

78

主题

634

帖子

1598

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1598
跳转到指定楼层
楼主
发表于 2020-3-14 19:15:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在构建中,可能会遇到常常需要根据树型某个节点,读取其所有上级或所有下级的情况。然后绑定到树型部件显示。
在Oracle中,可以用start with ... connect by prior ...来实现。

具体写法是:
查询下级:
  1. select * from sa_dept_dict start with dept_id=2170 connect by prior dept_ID=upper_id order by SORT_ORDER
复制代码

查询上级:
  1. select * from sa_dept_dict start with dept_id=2170 connect by prior upper_id=dept_ID order by SORT_ORDER
复制代码


在SQL SERVER 中就要略复杂一些了。需要用With....AS...语句,这个语句也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会
被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数据的部分。
下面我们就用with 结合 union 来查询树型的上级和下级:


查询下级:
  1. with tree as (select * from sa_dept_dict where dept_id=2016 union all
  2. select a.* from sa_dept_dict as a,tree as b where b.dept_id=a.upper_id ) select * from tree order by sort_order
复制代码


查询上级:
  1. with tree as (select * from sa_dept_dict where dept_id=2016 union all
  2. select a.* from sa_dept_dict as a,tree as b where a.dept_id=b.upper_id ) select * from tree order by sort_order
复制代码

度量快速开发平台对此种写法完美支持。请大家收藏备用。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1
回复

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
沙发
发表于 2020-3-14 22:15:54 | 只看该作者
已收藏!
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
板凳
发表于 2020-3-14 22:16:02 | 只看该作者
已收藏!
回复 支持 反对

使用道具 举报

198

主题

1313

帖子

3782

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3782
地板
发表于 2020-3-15 09:55:58 | 只看该作者
这绝对是好东西。干货带走。。。
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
5#
发表于 2020-3-15 10:59:53 | 只看该作者
好东西啊,收藏收藏
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-2 19:27 , Processed in 0.159480 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表