表 – 用户
列 –
(userId,name,managerId)@H_502_4@
行 – @H_502_4@
(1,nilesh,0) (2,nikhil,1) (3,nitin,2) (4,Ruchi,2)
如果我给用户ID,它应该列出所有报告人给他.
如果我给userId = 2它应该返回3,4.@H_502_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
解决方法
在我看来,邻接列表模型的问题在于它很难在sql中处理,尤其是当您不知道树结构的嵌套程度有多深时.
你提到的“左右叶子方式”可能是嵌套的集合模型,允许你存储这样的东西@H_502_4@
LFT RGT Name 1 8 nilesh 2 7 nikhil 3 4 nitin 5 6 Ruchi
然后你可以简单地找到所有下属@H_502_4@
SELECT Name FROM Hierarchy WHERE LFT BETWEEN @LFT AND @RGT
我认为处理查询要容易得多,但树修改更难做到.如果您的数据没有太大变化,那么我认为这是一个更好的解决方案. (不是每个人都会同意我的意见)@H_502_4@
有一个Very good Tutorial here@H_502_4@