sql返回嵌套结果集?

时间:2011-04-30 00:47:15

标签: sql sql-server tsql hierarchical-data

是否可以让单个sql查询返回嵌套结构,而不是执行递归db调用来构建数组或对象?

我正在使用与此伪代码类似的东西来构建:

parentCategory = 'SELECT * 
                    FROM Category 
                   WHERE child_category IS NULL 
                     AND ParentIDNo IS NULL';   

while parentCategory do
      childCategory = 'SELECT * 
                         FROM Category 
                        WHERE parent_id = parentCategory.id'; 
   if (parentCategory.id)
      do recursive  'SELECT * 
                       FROM Category 
                      WHERE parent_id = parentCategory.id';
end  


    Cat_1
    -child_1
    -child_2
    --grandchild_1  
    Cat_2
    -child_1
    -child_2
    --grandchild_1

3 个答案:

答案 0 :(得分:4)

签出recursive ctes假设sql 2005或更高版本

答案 1 :(得分:0)

如果您修改表格以包含树顶部的分隔路径,那么您不必递归地执行此操作。

例如,如果您的树路径为树的grandchild_1节点的“cat_1 | child_2 | grandchild_1”,那么您将能够将字符串拆分为加载到树中,并且能够确定你在的那棵树。此外,当您从表中选择时,您可以按路径排序,树将完全按照您想要绘制的方式出现。

否定的是,您必须在树的任何更改上维护此路径。

答案 2 :(得分:0)

如果您正在使用SQL 2005及更高版本,这是非常有可能的。有关分层查询的入门知识,请参阅:http://www.ienablemuch.com/2010/04/simple-hierarchical-query-display.html