表-用户
列-(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
我认为查询起来要容易得多,但是对树的修改却很难。如果您的数据变化不大,那么我认为这是一个更好的解决方案。(虽然不是每个人都会同意我的观点)
这里有一个很好的教程