Sql 通过带条件的\u ISLEAF连接\u
我使用整个Sql 通过带条件的\u ISLEAF连接\u,sql,oracle,Sql,Oracle,我使用整个START WITH和CONNECT BY子句在一个表上进行分层设置,我使用这些子句设置一个垂直对齐的菜单系统,该系统可以向右扩展,具体取决于菜单选项是否有子项和总级别数。另外,作为菜单选项的一部分,如果父项有子项,我还会显示一个'>'符号来指定此项 我的问题是,我正在使用CONNECT\u BY\u ISLEAF确定菜单选项是否为叶,但我的分层表中还有一列指定菜单选项是否处于活动状态 因此,当我在菜单中设置了一个父/子菜单时,父菜单的ISLEAF值为0,子菜单的1,但实际上我已经使子
START WITH
和CONNECT BY
子句在一个表上进行分层设置,我使用这些子句设置一个垂直对齐的菜单系统,该系统可以向右扩展,具体取决于菜单选项是否有子项和总级别数。另外,作为菜单选项的一部分,如果父项有子项,我还会显示一个'>'
符号来指定此项
我的问题是,我正在使用CONNECT\u BY\u ISLEAF
确定菜单选项是否为叶,但我的分层表中还有一列指定菜单选项是否处于活动状态
因此,当我在菜单中设置了一个父/子菜单时,父菜单的ISLEAF
值为0
,子菜单的1
,但实际上我已经使子菜单选项处于非活动状态,我的'>
符号仍然显示在父菜单级别,即使此父级的子记录处于非活动状态
您知道如何将此项与CONNECT\u BY_ISLEAF
值一起检查,以防止出现'>'
符号,即使此父菜单选项具有非活动的子记录
基本上,如果子记录基于ISLEAF
值存在,但子记录处于非活动状态,则忽略此叶记录并假装它实际上不存在
SELECT *
FROM table
CONNECT BY
parent = PRIOR id
AND active = 1
这将仅选择处于活动状态的子项(如果您需要的话)
请注意,对于没有活动子项的项目,此查询将返回CONNECT\u BY_ISLEAF=1
,并且它们可能会在您的设计中被视为端点。感谢Quassnoi-我没有意识到您可以在此级别添加条件。现在一切都好了。