如何从树状结构的数据库表中获取完全限定名称?
基本上,我有一个像树一样的表(Name,NodeID,ParentNodeID,更多属性),并希望在不同属性的所有节点上执行搜索。但是,我希望从找到匹配项的结果返回的是完全限定名称。从那个FQN,我可以突出显示找到的UI(TreeView)中的节点。
我看了看并找到了答案:
http://maulikdhorajia.blogspot.ca/2012/06/sql-server-using-ctecommon-table.html
并尝试修改它以通过将最终的select语句更改为此格式来获取它:
SELECT A.NodeID , A.ParentID , A.Name , (REPLICATE( (SELECT Name FROM [TABLENAME] WHERE NodeID = A.ParentID) , HLevel ) + '.' + A.Name) AS TreeNode FROM CTECompany A ORDER BY OrderByField, A.Name;
但是,如果有两个以上的深度级别,则不起作用。以下是一些示例结果:
Root.Container1
Container1Container1.Item1
Root.Container2
Container2Container2.Container3
Container3Container3Container3.ThirdTerm
正如您所看到的,有些物品没有正确出现。如果有人能帮我解决这个问题,那会有很大的帮助吗?我基本上想要NDepth FQN提取。
答案 0 :(得分:0)
我最终跟踪了表格中的FQN。使管理更容易。我使用NodeID作为密钥保留了NDepth父子关系,但也保留了FQN。