【发布时间】:2010-12-17 23:03:15
【问题描述】:
我在 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 的 FK。我想创建一个视图,结果如下:
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 功能,但据我所知,它仅适用于固定数量的递归级别。然而,就我而言,你永远不知道会找到多少层,而且它们可能会逐行变化。
我也在这里看到了与此类似的问题。但是,我认为没有人询问为表格中的每一行构建“路径”。如果我错过了,对不起。
非常感谢。
【问题讨论】: