Sql 搜索由SYS\U CONNECT\U by\U在CONNECT by PREVIOR查询中创建的路径
我使用“按查询连接”来显示组上的分层组,在这个页面上,我有一个用于选择父组的组合框。但我想隐藏包含当前正在编辑的组的所有行 这是我的桌子Sql 搜索由SYS\U CONNECT\U by\U在CONNECT by PREVIOR查询中创建的路径,sql,oracle,connect-by,Sql,Oracle,Connect By,我使用“按查询连接”来显示组上的分层组,在这个页面上,我有一个用于选择父组的组合框。但我想隐藏包含当前正在编辑的组的所有行 这是我的桌子 GROUPS ------------- GROUP_ID, GROUP_NAME, GROUP_TYPE, PARENT_ID 我的第一个问题是, SELECT * FROM (SELECT GROUP_ID, LPAD('-',LEVEL,'-')|| GROUP_NAME GROUP_NAME, SYS_CONNECT_
GROUPS
-------------
GROUP_ID, GROUP_NAME, GROUP_TYPE, PARENT_ID
我的第一个问题是,
SELECT * FROM
(SELECT
GROUP_ID,
LPAD('-',LEVEL,'-')|| GROUP_NAME GROUP_NAME,
SYS_CONNECT_BY_PATH(GROUP_NAME, '->') GROUP_NAME_PATH
FROM GROUPS
START WITH PARENT_ID IS NULL AND TYPE='G'
CONNECT BY PRIOR GROUP_ID=PARENT_ID)
这一结果已公布
27 -Generel Manager ->Generel Manager,
28 --Project Manager ->Generel Manager->Project Manager,
24 ---System Administrator ->Generel Manager->Project Manager->System Administrator
25 ---Software Developer ->Generel Manager->Project Manager->Software Developer
26 ----Intern ->Generel Manager->Project Manager->Software Developer->Intern
比如,
在第Editgroup.aspx?group_id=24页上
它显示了所有这些行,但我想隐藏包含GROUP_ID=24的所有行路径
因为组不能是selfchild
我找到了这个查询的临时解决方案
SELECT * FROM
(SELECT
GROUP_ID,
LPAD('-',LEVEL,'-')|| GROUP_NAME GROUP_NAME,
SYS_CONNECT_BY_PATH(GROUP_NAME, '->') || ',' GROUP_NAME_PATH
FROM GROUPS
START WITH PARENT_ID IS NULL AND GROUP_TYPE='G'
CONNECT BY PRIOR GROUP_ID=PARENT_ID)
WHERE HIYERARSI_ID NOT LIKE '%,24,%'
24来自url
我认为,当我们获得大数据时,这将不是一个有效的解决方案
如何以更智能的方式检测路径是否包含此id?下面的代码将删除组号24及其所有子项:
SELECT
GROUP_ID,
LPAD('-',LEVEL,'-')|| GROUP_NAME GROUP_NAME,
SYS_CONNECT_BY_PATH(GROUP_NAME, '->') GROUP_NAME_PATH
FROM GROUPS
START WITH PARENT_ID IS NULL AND TYPE='G'
AND GROUP_ID <> 24 /* added condition */
CONNECT BY PRIOR GROUP_ID=PARENT_ID
AND GROUP_ID <> 24 /* added condition */
选择
组ID,
LPAD(“-”,级别“-”)| |组名称组名称,
系统连接路径(组名称“->”)组名称路径
来自团体
以父项开头的\u ID为NULL,类型为='G'
和组ID 24/*添加的条件*/
按先前的组连接\u ID=父组\u ID
和组ID 24/*添加的条件*/
重新编写,只找到以Child\u id=24或类似的开头的父母,怎么样?