[Oracle] 오라클 - OUTER JOIN (LEFT/RIGHT/FULL)
by mini_min[Oracle]
오라클 - OUTER JOIN (LEFT/RIGHT/FULL)
✔️ OUTER JOIN
: 조인 수행시 왼쪽 OR 오른쪽 OR 양쪽을 기준으로 조인을 수행한다.
❌ 아우터 조인은 순서에 따라 나오는 결과가 다를 수 있다.
1) LEFT OUTER JOIN
: 왼쪽에 있는건 다 나오는 경우
-- 기본형식
SELECT [테이블명1.]컬럼명, [테이블명2.]컬럼명
FROM 테이블명1
LEFT OUTER JOIN 테이블명2 ON 테이블명1.컬럼명=테이블명2.컬럼명;
SELECT b.bCode, bName, sNum, qty
FROM book b
LEFT OUTER JOIN dsale d ON b.bCode = d.bCode;
💡 book 테이블에 있는 모든 레코드 출력,
dsale 테이블은 book 테이블과 중복되는 레코드들만 출력된다.
즉, bCode, bName 은 모두 출력되지만, sNum 과 qty 는 book 과 dsale 에 없는 내용이면 null 값으로 출력된다.
2) RIGHT OUTER JOIN
: 오른쪽에 있는건 다 나오는 경우
-- 기본형식
SELECT [테이블명1.]컬럼명, [테이블명2.]컬럼명
FROM 테이블명1
RIGHT OUTER JOIN 테이블명2 ON 테이블명1.컬럼명=테이블명2.컬럼명;
SELECT b.bCode, bName, sNum, qty
FROM dsale d
RIGHT OUTER JOIN book b ON d.bCode = b.bCode;
💡 위에 left outer join 한 결과와 같다. book 테이블이 모두 출력.
🔒 문제
-- 한 권도 판매되지 않은 책 출력하기
SELECT b.bCode, bName
FROM book b
LEFT OUTER JOIN dsale d ON b.bCode = d.bCode
WHERE d.bCode IS NULL;
3) FULL OUTER JOIN
: 양쪽 모든 레코드가 나오도록 짜는 조인
-- 기본형식
SELECT [테이블명1.]컬럼명, [테이블명2.]컬럼명
FROM 테이블명1 FULL OUTER JOIN 테이블명2 ON 테이블명1.컬럼명=테이블명2.컬럼명;
🔒 문제
-- SALE 테이블 다 나오고 회원/비회원 다 나옴
SELECT sNum, sDate, s.cNum, m.cNum, userId
FROM sale s
LEFT OUTER JOIN member m ON s.cNum = m.cNum;
💡LEFT OUTER JOIN 했을 때 나오는 값
1) 판매 테이블에 들어가는 회원 고객들
2) 판매 테이블에 들어가는 비회원 고객들
-- 비회원은 안나오도록. 회원의 SALE 테이블이 나옴
SELECT sNum, sDate, s.cNum, m.cNum, userId
FROM sale s
RIGHT OUTER JOIN member m ON s.cNum = m.cNum;
💡 RIGHT OUTER JOIN 하면
member 테이블이 기준이 되어서, 회원들과 회원들의 판매 테이블 정보가 출력
-- 모두 결합
SELECT sNum, sDate, s.cNum, m.cNum, userId
FROM sale s
FULL OUTER JOIN member m ON s.cNum = m.cNum;
'SQL쿼리' 카테고리의 다른 글
[Oracle 문제] 조인 - 비회원의 판매 현황 (0) | 2022.08.13 |
---|---|
[Oracle] 오라클 - UPDATE JOIN VIEW / 서브쿼리 (0) | 2022.08.13 |
[Oracle] 오라클 - 제약조건 확인 / 부자 관계 출력 / 부모 테이블, 자식 테이블 목록 (0) | 2022.08.13 |
[Oracle] 오라클 - 셀프 조인 / NON-EQUI JOIN (0) | 2022.08.11 |
[Oracle] 오라클 - 조인 (INNER JOIN 종류 / EQUI JOIN 등) (0) | 2022.08.11 |
블로그의 정보
개발자 미니민의 개발로그
mini_min