회원코드 추천회원
1111 2222
1111 3333
2222 4444
2222 5555
3333 6666
3333 7777
... ....
이런 식으로 회원마스타를 구성하였을 때
한 회원을 기준으로 추천회원을 계속 연결하여 조회할 수 있는 테일블
구조나 쿼리 방법이
있을까요?
1111 - 2222 - 4444
- 5555
- 3333 - 6666
- 7777 ....
오라클에서는 순환고리형 자료구조라 하여 특별한 명령이 있다는데
MS-SQl을 사용하여야 하거든요
참고고 오라클 예제를 올립니다
1. 상위 한부서에서 하위특정level의 부서를 모두 찾는다.
select dept_cd from fzj101t
where dept_lvl = '8'
connect by prior dept_cd = up_dept_cd
start with up_dept_cd = '500001'
order by dept_cd
2. 하위의 한부서에서 상위level의 한 부서를 찾는다.
select dept_cd,dept_name ,dept_lvl from fzj101t
where dept_lvl = '5'
connect by prior up_dept_cd = dept_cd
start with dept_cd = '800001'
3. 하위의 한부서에서 상위level의 한 부서를 찾으면서 자신의 내역도
가져온다.
select a.shop_no ,
(select b.dept_cd || b.dept_name from
fzj101t b
where b.dept_lvl = '5'
connect by prior b.up_dept_cd = b.dept_cd
start with b.dept_cd = a.shop_no )
from fzj103t a
where shop_no like '8E01%'
order by 2 ; /* group by 적용안됨 */
4. 상윈level의 하위 자료중에서 상위로 집계하는 정보 ( 5 -> 8
-> 7 )
select a.dept_cd ,
(select b.dept_cd || b.dept_name from
fzj101t b
where b.dept_lvl = '7'
connect by prior b.up_dept_cd = b.dept_cd
start with b.dept_cd = a.dept_cd ) kk
from (select dept_cd, dept_lvl , up_dept_cd from fzj101t
where dept_lvl = '8'
connect by prior dept_cd = up_dept_cd
start with up_dept_cd = '500001' ) a
order by dept_cd , kk
/
|