안녕하세요. 유령 회원처럼 좋은 정보를 받아만 가다가 이렇게 처음 글을 써 봅니다.
다름이 아니라... 게시판을 작성하다가 해결이 안되는 부분이 있어 이렇게 문의 드립니다.
상황은 아래와 같습니다.
- MyID : 자신의 키
- PrtID : 부모키
- CNTN : 컨텐츠 제목
- DEL_YN : 삭제 여부
이런구조로 테이블을 형성하고 있습니다.
글을 삭제하게 되면 DEL_YN 값을 Y로 변경하여 숨기는 형태의 게시판 입니다.
단, 삭제된 글 중 하위 노드가 존재하면 "삭제된 글입니다"를 표시하고 하위 노드는 출력을 해줍니다.
하지만 하위 노드도 삭제되 었다면... 즉, 부모와 자식이 모두 삭제된 상태라면 출력이 되지 않아야 합니다.
MyID PrtID CNTN DEL_YN
1 null 부모1 N
2 1 자식1 N
3 2 자식1-1 Y
4 1 자식2 Y
5 4 자식2-1 N
6 5 자식 2-1-1 Y
7 1 자식3 Y
8 7 자식3-1 Y
9 8 자식 3-1-1 Y
이런게 되어 있을때... 출력은 아래와 같아야 하는 상황입니다.
1 부모1
2 자식1
4 삭제된글입니다.
5 자식2-1
3,6,7,8,9 는 출력이 되지 않아야 하는 경우 입니다.
SELECT * FROM(
SELECT MYID, PRTID, CNTN, DEL_YN, CONNECT_BY_ISLEAF AS LEAF
FROM BOARD
START WITH PRTID IS NULL
CONNECT BY PRIOR MYID = PRTID
) AAA
WHERE AAA.LEAF !=1 OR AAA.DEL_YN !='Y'
이렇게 쿼리를 작성하니... 자식이 없으면서 삭제된 경우는 출력되지 않지만,
부모도 삭제되고 자식도 삭제된 경우는 출력이 됩니다.
고수님들의 한수 부탁드립니다. ^^
|