2011-04-30 158 views
1

是否有可能有一個單一的SQL查詢返回一個嵌套的結構,而不是做遞歸數據庫調用來建立數組或對象?sql返回嵌套結果集?

我用類似這樣的僞代碼的東西來構建:

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

什麼是客戶端?你使用ORM嗎? – 2011-04-30 00:55:13

+0

什麼版本的SQL Server?假設使用SQL Server 2005+,遞歸CTE將是可能的選擇。 – 2011-04-30 00:56:05

+0

即時通訊使用SQL Server 2005,使用PHP和具體http://phplens.com/lens/adodb/docs-adodb.htm ORM – Ronn 2011-04-30 11:09:19

回答

0

如果修改表中包含頂端分隔的路徑那麼你不必遞歸地做這件事。

例如,如果樹的grandchild_1節點的樹路徑是「cat_1 | child_2 | grandchild_1」,那麼您將能夠拆分字符串以加載到樹中,以及能夠確定級別在你所在的樹上。同樣,當你從表格中選擇時,你將能夠按照路徑排序,並且樹會完全按照你想要繪製的那樣出來。

否定的是,您將不得不在維護樹上的任何更改時保持此路徑。