是否可以让单个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
答案 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