数据库部门目录树查询

无限层级结构的table1表,Id(主键),ParentId(父级id)查询某个Id的全部下级或全部上级,使用WITH AS,UNION ALL 查询

一、查询Id为1全部的下级code

WITH T
AS( 
    SELECT * FROM table1 WHERE Id=1
    UNION ALL 
    SELECT a.*  FROM table1 a INNER JOIN T ON a.ParentId=T.Id  
) 
SELECT * FROM T

二、查询Id为88全部的上级blog

WITH T
AS( 
    SELECT * FROM table1 WHERE Id=88
    UNION ALL 
    SELECT a.*  
    FROM table1 a INNER JOIN T ON a.Id=T.ParentId  
) 
SELECT * FROM T

内容来源http://www.javashuo.com/article/p-ukneqnsi-hy.html

将得到的部门路径在一行展示

WITH T
AS( 
    SELECT * FROM LR_Base_Department WHERE F_DepartmentId='id' 
		UNION ALL 
		SELECT a.* 
		FROM LR_Base_Department a INNER JOIN T ON a.F_DepartmentId =T.F_ParentId
	)
SELECT DISTINCT
    F_Name= (
					 STUFF(
								(SELECT '-' + F_Name
								 FROM T
								 ORDER BY F_EnCode -- 因部门是反的所以进行排序
								 FOR xml path('')
								 
								),1,1,''
								)
						 ) FROM T jmu
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值