【发布时间】:2016-09-18 01:21:08
【问题描述】:
我有一个带有 SQL Server 2008 R2 数据库的商业应用程序,其中包含一个应该对文件和文件夹结构进行建模的表,类似于
我正在尝试编写一个每行返回两个值的查询:
- 一份文件
- 文档的完整连接路径,从顶级文件夹到文档的直接容器,例如 Root:Level1:Level2..:LevelN。
通常,递归查询应该能够处理这种情况,但有一个复杂的问题。 Folder Item 表包含每个文档和子级别的冗余条目,将它们与文件夹结构中的每个祖先配对,而不仅仅是它们的直接父级。
而不是 (文件,父母) (父母,祖父母) (祖父母,曾祖父母) ... (祖先,根)
该表包含 (文件,父母) (文件,祖父母) ... (文件,祖先) (文档,根) (父母,祖父母) ... (父母,祖先) (父母,根) ... (祖父母,曾祖父母) ... (祖父母,根)
等等。我确信数据建模者有他们设计的理由,但它否定了标准递归分层查询的使用。事实上,当我尝试时,执行超过了递归级别的最大数量。
有没有其他人遇到过类似的问题,是否可以在不借助标准 SQL 功能之外的复杂编程的情况下解决?
非常感谢
帕特里克
【问题讨论】:
-
发布一些表结构和示例数据怎么样?如果您只是将递归基于名称,您可能会打一场失败的战斗。
-
递归基于唯一但非 PK VARCHAR 值“DOCNUMBER”,其中 PARENT 列包含祖先行的 DOCNUMBER。
-
幸运的是,事实证明已决定忽略现有的文件夹层次结构,并且由于一次(明智的)业务决策,问题已经消失。感谢 Sean 和 Tab 的回答..
标签: sql-server recursion hierarchical