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は自己子化できないため、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が含まれているかどうかをよりスマートに検出するにはどうすればよいですか?