2010-10-01 109 views
2

我對我的菜單樹使用了嵌套集合模型,並試圖通過一些過濾來獲取節點。我有幾個根節點。 例子:嵌套集合篩選

Menu1(on) 
\-Submenu1(on) 
\-Submenu2(on) 
Menu2(off) 
\-Submenu3(on) 
\-Submenu4(on) 
    \-Submenu5(on) 
Menu3(on) 

我要回「的」有父母的「關閉」,而不是那些所有節點。 對於上面的例子,查詢應只返回Menu1(和子項)和Menu3。

Menu1(on) 
\-Submenu1(on) 
\-Submenu2(on) 
Menu2(on) 
\-Submenu3(on) 
\-Submenu4(off) 
    \-Submenu5(on) 
Menu3(on) 

對於這個例子,查詢應該返回除子菜單4以外的所有子項。

任何想法?

在此先感謝。

+0

相關:http://stackoverflow.com/questions/3642447/counting-records-belonging-to-a-category-in-mysql/3642539#3642539 – NullUserException 2010-10-01 16:24:02

回答

3
SELECT t0.* 
FROM sometable AS t0 
LEFT JOIN sometable AS t1 ON t0.lft BETWEEN t1.lft AND t1.rgt AND t1.active='off' 
WHERE t1.lft IS NULL 
ORDER BY t0.lft 

即,選擇每一行裏沒有排與off包含(或是在同一行作爲)中的目標行。

+0

非常感謝!完善!!! – artix 2010-10-01 17:06:57