我正在使用 Connect By 查询来显示组上的分层组,在此页面上,我有一个用于选择父组的组合框。但我想隐藏所有包含当前正在编辑的组的行。
这是我的桌子,
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 的行路径,因为 Group 不能是 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?