在 SQL Server 2008 数据库中,我有以下表格:
Id Name ParentFolder
-- ---- ------------
1 Europe NULL
2 Asia NULL
3 Germany 1
4 UK 1
5 China 2
6 India 2
7 Scotland 4
ParentFolder是对同一表中Id的外键。我想创建一个视图,使其结果类似于以下内容:
Id Name FullName
-- ---- --------
1 Europe Europe
2 Asia Asia
3 Germany Europe/Germany
4 UK Europe/UK
5 China Asia/China
6 India Asia/India
7 Scotland Europe/UK/Scotland
正如您所看到的,我需要通过递归使用ParentFolder关系任意次数来构建FullName值,直到找到NULL为止。
编辑。表中的每一行都知道其他行是其父级,但不知道它在层次结构中的绝对位置。因此,一个存储每个行的绝对位置的谱系系统不适用于此。
我知道SQL Server 2008的hierarchyid功能,但据我所知,它仅适用于固定数量的递归级别。然而,在我的情况下,您永远不知道会找到多少级别,并且它们可能会从一行到另一行发生变化。
我也看到过类似的问题发布在这里。但是,我认为没有人问过如何为表中的每一行构建“路径”。如果我错过了,请原谅。
非常感谢。