百分悬赏!!!问题如图,我怎么在SQL SERVER中查询出这样的树形结构?

 我来答
chen_hongyang
2016-05-25 · TA获得超过5447个赞
知道大有可为答主
回答量:2790
采纳率:91%
帮助的人:870万
展开全部
一般来说,角色的定义没有用树形结构的,一般角色的定义是这样的:
如总共有10总权限:
1 系统文件删除。
2 工作文件归档
3 工作文件创建新版
...
10 ...
管理员帐户可以10个权限都有,其他帐号可以有不通的权限,权限之间可以重复。

如果要树形结构,可以用 pid 和 cid 定义,pid 是上一级,cid 是下一级,如
id pid cid
1 管理员 角色a
2 管理员 角色b
3 角色b 角色c
4 角色b 角色d
...
追问
我知道可以这样定义,但是请仔细看看我那个图,问题的重点,是怎样去获取那些数据,同级不包含的不获取,但是又要获取到最顶级往下。
追答
说白了,你就是要通过子节点查询父节点吗,参考:

子节点查询父节点
create function GetParentID(@ChildID int)
returns @t table(PID int)
as
begin
insert into @t select parent_id from [DJB].[dbo].[table] where ID=@ChildID
while @@rowcount0
begin
insert into @t select a.parent_id from [DJB].[dbo].[table] as a
inner join @t as b
on a.ID=b.PID
and not exists(select 1 from @t where PID=a.parent_id)
end
return
end
go
select * from dbo.GetParentID(1648)
drop function GetParentID
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式