求一条SQL语句 查询所有下级

moduofanchen 2011-04-01 03:46:10
我能查出某个单位的所有下级
---------------------------
WITH rs(
id ,[level])
AS(
select id, 0 from OrganizeInfo
where id = 31
UNION ALL
select OrganizeInfo.id, rs.[level]+1
from OrganizeInfo inner join rs on OrganizeInfo.ParentId = rs.id ) select * from rs

结果
----------------------------------
id level
----------- -----------
31 0
98 1
99 1
100 1
101 1
102 1
103 1
104 1

现在有CertificateInfo 表
存的时候单位的证件
表有自增id 单位id 以及证书信息

提问
-------------------------------------
需要得出传入单位ID所有下级的证书信息(注:所有下级 意思就是包括下级的下级 下级的下级的下级....)
...全文
825 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
可以转去SQL Server论坛问。
xinghuihui 2011-04-01
  • 打赏
  • 举报
回复
是不是用存储过程会简单一点呀。
liaoyukun111 2011-04-01
  • 打赏
  • 举报
回复
NNB
wangtai_xiang 2011-04-01
  • 打赏
  • 举报
回复
没看懂
lchy110 2011-04-01
  • 打赏
  • 举报
回复
其实貌似这样递归的东东 我觉得放在程序里估计还好处理点
nevergu 2011-04-01
  • 打赏
  • 举报
回复
给你一个递归函数。
传参数就行了。


CREATE Function GetChildbase(@UnitId bigint, @Level int)
Returns @Child Table([UnitId] int ,[username] varchar(64),[ParentUnitId] int)
As

Begin

If @Level < 1 --如果参数@Level小于“1”,则得到所有子单位
Begin
Insert @Child
Select ID,UserName,Pid
From [Login] Where inure=1 and [Pid] = @UnitId



While @@ROWCOUNT > 0

Begin
Insert @Child
Select B.ID,B.UserName,B.Pid
From @Child A Inner Join [Login] B
On b.inure=1 and A.[UnitId]=B.[Pid]
Where B.[Pid] Not In
(Select Distinct [ParentUnitId] From @Child)
End

Insert @Child
Select ID,UserName,Pid
From [Login] Where inure=1 and [id] = @UnitId
End
Else
Begin
Set @level = @Level -1
Insert @Child
Select id,username,Pid
From [Login] Where inure=1 and [Pid]=@UnitId



While @@ROWCOUNT > 0 And @level > 0
Begin
Set @level = @Level -1
Insert @Child
Select B.id,B.Username,B.Pid
From @Child A Inner Join [Login] B
On b.inure=1 and A.[UnitId]=B.[Pid]
Where B.[Pid] Not In
(Select Distinct [ParentUnitId] From @Child)
End


Insert @Child
Select ID,UserName,Pid
From [Login] Where inure=1 and [id] = @UnitId

End
Return
End



























































62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧