Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 通过带条件的\u ISLEAF连接\u_Sql_Oracle - Fatal编程技术网

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-我没有意识到您可以在此级别添加条件。现在一切都好了。