如何在树结构中获取节点的所有子节点? SQL查询?

前端之家收集整理的这篇文章主要介绍了如何在树结构中获取节点的所有子节点? SQL查询?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
表 – 用户

列 –
(userId,name,managerId)

行 –

(1,nilesh,0)
(2,nikhil,1)    
(3,nitin,2)  
(4,Ruchi,2)

如果我给用户ID,它应该列出所有报告人给他.
如果我给userId = 2它应该返回3,4.

这个查询是否正确

SELECT ad3.userId
FROM user au,user  au2,user  au3
WHERE 
    ad.managerId = ad2.managerId AND 
    ad3.managerId = ad2.userId AND
    ad.userId=2

在DB中管理树结构有什么有效的方法吗?
右叶和左叶怎么样?

解决方法

在我看来,邻接列表模型的问题在于它很难在sql中处理,尤其是当您不知道树结构的嵌套程度有多深时.

你提到的“左右叶子方式”可能是嵌套的集合模型,允许你存储这样的东西

LFT   RGT   Name
1     8      nilesh
2     7      nikhil
3     4      nitin
5     6      Ruchi

然后你可以简单地找到所有下属

SELECT Name FROM Hierarchy WHERE LFT BETWEEN @LFT AND @RGT

我认为处理查询要容易得多,但树修改更难做到.如果您的数据没有太大变化,那么我认为这是一个更好的解决方案. (不是每个人都会同意我的意见)

有一个Very good Tutorial here

原文链接:https://www.f2er.com/mssql/76492.html

猜你在找的MsSQL相关文章