Stored procedure 으로 기능을 구현하고 있는데
join 만 잘 응용하면 원하는 값을 추출할 수 있을 것 같은데
쉽지 않네요 ㅡ.ㅡ;
join을 이용하든 커서를 사용하든 원하는 결과만 나오면 됩니다.
아래와 같이 3개의 테이블이 존재합니다.
A테이블과 B테이블은 1:N 관계이고 제가 구하고자 하는 값은
아래와 같습니다.
A테이블
GRP
|
VAL
|
GRP1
|
3
|
GRP2
|
4
|
GRP3
|
6
|
GRP4
|
9
|
B테이블
GRP
|
CD
|
GRP1
|
A
|
GRP1
|
B
|
GRP2
|
A
|
GRP3
|
C
|
GRP4
|
E
|
.
|
.
|
C테이블
CD
|
TMP
|
A
|
X
|
B
|
X
|
A
|
Y
|
C
|
Y
|
E
|
Z
|
.
|
.
|
먼저 C 테이블의 TMP 값에 해당하는 CD 값을 구합니다.
예를 들어 TMP='X' 인 경우엔
C테이블의 CD 컬럼값이 A,B 로 추출됩니다.
이 A,B 값을 가지고 B테이블에서 A,B의 값으로 그룹핑 되어 있는
값이 있나 찾아봅니다.
이 예의 경우 GRP컬럼의 값이 GRP1로 구해져서
최종적으로 A테이블에서 추출되는 값은 아래와 같이 1행이 나오면
됩니다.
그러나 TMP='Y' 인 경우엔
C 테이블의 CD 컬럼값이 A,C 로 추출됩니다.
위와 마찬가지로 A,C 값을 가지고 B테이블에서 A,C 값으로 그룹핑
되어있는
값을 찾아봅니다. 그러나 이경우엔 그룹핑 되어 있는 값이 존재하지
않고
GRP2 , GRP3 각각의 GRP 값으로 존재하고 있으므로 최종적으로
A테이블에서
추출되는 값은 아래와 같이 두개의 행이 나오면 됩니다.
C 테이블의 TMP='Z' 인 경우엔
아래와 같이 한개의 행이 추출되면 되겠죠 ^^
|