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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[分享] SQLserver数据库中关于递归的查询使用

[复制链接]

198

主题

1313

帖子

3784

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3784
跳转到指定楼层
楼主
发表于 2020-3-19 13:32:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
度量快速开发平台数据库支持sqlserver数据库,我们之前习惯的oracle递归查询用的 start with dept_id=1000 connect by prior dept_id=upper_id的方式就不灵了。
比如我们的组织机构里面有很多下级机构及部门,要查询出登录人所在的机构,并列出该机构下所有机构和部门。Sqlserver写法如下:

  1. with NewTable as
  2. (
  3. select a.dept_id,a.dept_name,a.upper_id,a.tree_code,a.extend_type,a.DEPT_LEVEL,a.SORT_ORDER from  SA_DEPT_DICT a where a.DEPT_ID=登录用户的部门ID
  4. union all
  5. select b.dept_id,b.dept_name,b.upper_id,b.tree_code,b.extend_type,b.DEPT_LEVEL,b.SORT_ORDER from SA_DEPT_DICT b  inner join NewTable c on b.DEPT_ID=c.UPPER_ID
  6. where b.dept_TYPE=2 or b.DEPT_TYPE=6
  7. )
  8. ,
  9. NewTable1 as
  10. (
  11. select a.dept_id,a.dept_name,a.upper_id,a.tree_code,a.extend_type,a.DEPT_LEVEL,a.SORT_ORDER from  SA_DEPT_DICT a , (select  right(MAX(tree_code),4) dept_ID from NewTable where EXTEND_TYPE='机构' ) c where a.DEPT_ID=c.dept_ID
  12. union all
  13. select b.dept_id,b.dept_name,b.upper_id,b.tree_code,b.extend_type,b.DEPT_LEVEL,b.SORT_ORDER from SA_DEPT_DICT b  inner join NewTable1 c on c.DEPT_ID=b.UPPER_ID
  14. where b.dept_TYPE=2 or b.DEPT_TYPE=6
  15. )
  16. select DEPT_ID,DEPT_NAME,UPPER_ID,SORT_ORDER,EXTEND_TYPE,TREE_CODE from NewTable1
复制代码
请大家学习使用!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

198

主题

1313

帖子

3784

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3784
沙发
 楼主| 发表于 2020-3-19 13:35:38 | 只看该作者
这个主要是权限查询需要。比如我是A机构下面的人员,那就只能查看A机构下面的组织机构的数据。不能查看并行的B机构的数据。
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9325

积分

论坛元老

Rank: 8Rank: 8

积分
9325
板凳
发表于 2020-3-19 14:02:03 | 只看该作者
这个语句块霸道( ⊙ o ⊙ )啊!涨姿势了
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
地板
发表于 2020-3-19 16:08:43 | 只看该作者
不错,收藏一个
回复 支持 反对

使用道具 举报

78

主题

634

帖子

1598

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1598
5#
发表于 2020-3-19 22:54:54 | 只看该作者
非常不错,我前两天也写了一个专门测试。早预料到了你们会用。
回复 支持 反对

使用道具 举报

78

主题

634

帖子

1598

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1598
6#
发表于 2020-3-19 22:55:57 | 只看该作者
回复 支持 反对

使用道具 举报

198

主题

1313

帖子

3784

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3784
7#
 楼主| 发表于 2020-3-19 22:59:51 | 只看该作者
感觉比oracle 麻烦。不过也非常灵活,可以弄很多语句块来实现业务,看起来还是一条sql语句。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 01:06 , Processed in 0.164809 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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