0
나는 연결 쿼리를 사용하여 그룹에 계층 적 그룹을 표시합니다.이 페이지에는 부모 그룹을 선택하기위한 콤보 상자가 있습니다. 하지만 현재 편집중인 그룹을 포함하는 모든 행을 숨기려고합니다. 경로에서 검색하여 SYS_CONNECT_BY_PATH에 의해 연결하여 이전 쿼리로 연결
이
내 테이블입니다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
에
이 theese 모든 행을 보여 주지만, 나는 그룹이 selfchild 할 수 없기 때문에 GROUP_ID = 24 을 포함하는 모든 행 경로를 숨기려고합니다.
이 쿼리로 임시 해결책을 찾았습니다.
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가 포함되어 있는지 확인하려면 어떻게해야합니까? 코드 아래
찾기 위해 다시 작성에 대해 단지 부모가 Child_id = 24 또는 유사한 시작하는 방법? – Randy