안녕하세요
테이블 A
NO CODE1 CODE2 CODE3
1 111 222 333
2 112 223 334
3 113 224 335
테이블 B
NO CODE NAME
1 111 홍길동
2 112 고길동
3 222 과장
4 223 부장
5 333 서초구
6 334 영등포구
1 홍길동 과장 서초구
2. 고길동 과장 영등포구
이렇게 줄력 하고자 합니다.
도움 부탁 드립니다.
SELECT a.no , b1.name name1 , b2.name name2 , b3.name name3 FROM a INNER JOIN b b1 ON a.code1 = b1.code INNER JOIN b b2 ON a.code2 = b2.code INNER JOIN b b3 ON a.code3 = b3.code ;
답변 감사 합니다.
그런데 만약 테이블 A에서 CODE1~3중 하나라도 NULL이라면 조회가 되질 않습니다.
그래서 생각해본게
(SELECT NAME FROM B X INNER JOIN A Z ON X.CODE = Z.CODE1)
이렇게 하니까 이름이 전부 조회가 되네요.
이건 어떻게 해결 해야 할까요?
-- 처음부터 예시자료에 널을 포함시켜 주셨으면 좋았겠네요.
SELECT a.no , b1.name name1 , b2.name name2 , b3.name name3 FROM a LEFT OUTER JOIN b b1 ON a.code1 = b1.code LEFT OUTER JOIN b b2 ON a.code2 = b2.code LEFT OUTER JOIN b b3 ON a.code3 = b3.code ;
상황이 추가되어 추가질문 드립니다.
테이블 TT
NO CODE1 TYPE
1 111 1
2 111 2
3 222 1
3 222 2
4 333 1
5 333 2
원질문에 대한 내용을 출력하되 테이블TT에서 TYPE값이 1인 사람의 정보만 출력 하려면 어떻게 해야 하나요?
질문이 모호하네요. type 이 a 의 컬럼인가요? b 의 컬럼인가요?
-- 1. A 의 컬럼인 경우. SELECT a.no , b1.name name1 , b2.name name2 , b3.name name3 FROM a LEFT OUTER JOIN b b1 ON a.code1 = b1.code LEFT OUTER JOIN b b2 ON a.code2 = b2.code LEFT OUTER JOIN b b3 ON a.code3 = b3.code WHERE a.type = '1' ;
-- 2. B 의 컬럼인 경우. SELECT a.no , b1.name name1 , b2.name name2 , b3.name name3 FROM a LEFT OUTER JOIN b b1 ON a.code1 = b1.code AND b1.type = '1' LEFT OUTER JOIN b b2 ON a.code2 = b2.code AND b2.type = '1' LEFT OUTER JOIN b b3 ON a.code3 = b3.code AND b3.type = '1' ;