안녕하세요.
사용자의 부서가 존재하는데 그 위의 상위 부서들에 대해 값을 업데이트 하고 싶습니다.
예를 들어 사용자의 테이블에 아래와 같이 데이터가 입력 되어있습니다.
사용자 ID | 부서명 | 부서코드 |
test | 삼성전기 | 2 |
그리고 부서 테이블이 아래와 같이 있습니다.
부서명 | 부서코드 | 상위부서코드 | flag |
삼성전자 | 0 | N | |
삼성SDI | 1 | 0 | N |
삼성전기 | 2 | 1 | N |
삼성생명 | 3 | 0 | N |
이런식으로 부서정보가 있다치면,
test 사용자가 존재하는 부서와 그 부서의 상위 부서들의 flag값을 Y로, 사용자가 존재하지 않는 부서는 N으로 업데이트를 하고 싶습니다.
즉 삼성전자, 삼성 SDI, 삼성전기는 flag가 Y, 삼성생명은 flag 가 N... 이렇게요.
재귀쿼리로 해볼려고 하는데... 잘 되질않네요.
어떤 방법으로 처리하면 좋을지 문의 드립니다.
감사합니다.
WITH emp AS ( SELECT 'test' empno, 2 deptno FROM dual ) , dept AS ( SELECT '삼성전자' dname, 0 deptno, null p_deptno, 'N' use_yn FROM dual UNION ALL SELECT '삼성SDI' , 1, 0, 'N' FROM dual UNION ALL SELECT '삼성전기', 2, 1, 'N' FROM dual UNION ALL SELECT '삼성생명', 3, 0, 'N' FROM dual ) -- 1. 사원이 있는 부서 조회(갱신 대상 확인용) -- SELECT * FROM dept WHERE deptno IN (SELECT deptno FROM dept START WITH deptno IN (SELECT deptno FROM emp) CONNECT BY deptno = PRIOR p_deptno ) ; -- 2. Update -- UPDATE dept SET use_yn = 'Y' WHERE deptno IN (SELECT DISTINCT deptno FROM dept START WITH deptno IN (SELECT deptno FROM emp) CONNECT BY deptno = PRIOR p_deptno ) ;