我正在使用嵌套集模型作为我的菜单树,我正在尝试通过一些过滤来获取节点。我有几个根节点。 例如:
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)
对于此示例,查询应返回除Submenu4以外的所有子节点。
有什么想法吗?
提前致谢。
答案 0 :(得分: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
的行的每一行包含(或与目标行相同的行)。