Loading...

DB/Oracle / / 2022. 2. 15. 22:45

DB 46강. 조인 - 외부 조인(OUTER JOIN) ★

반응형

 

게시글 3건을 보고 싶은데

누가 적었는지 나와있지 않고

1, 2라고 Id만 나와있다.

 

이때 1이 누구고 2가 누군지 확인하기 위해

INNER JOIN을 사용했다.

 

그러면 UserTbl의 id와

PostTbl의 UserId를 비교해

같은 컬럼을 INNER JOIN 하여

합쳐진 테이블을 출력해줬다.

INNER JOIN을 하면

User의 id가 같은 데이터만

JOIN 하여 합쳐서 출력해주는데

 

동일 조인을 하게 되면

 love의 데이터는 절대 출력되지 않는다.

 

회원정보를 모두 출력하고,

회원이 쓴 글들을 보여달라는 요청에

동일 조인으로 해결할 수 없다.

 

love가 나오지 않기 때문이다.

 

 모든 User의 데이터를 합쳐서

보여주기 위해서는 OUTER JOIN을 해준다.

 

OUTER JOIN을 사용하는 방법을 알아보자.

 

조인을 사용할 때

driving 테이블을 JOIN 왼쪽에,

driven 테이블을 JOIN 오른쪽에 써주기로 했었다.

 

그러면 위 테이블의 예제에서는

postTbl JOIN userTbl의 형태이다.

 

그런데 우리는 모든 회원의 정보가

필요하기 때문에

userTbl JOIN postTbl로

userTble을 JOIN 왼쪽에 써준다.

 

동일 조인이 아닌

user의 정보가 모두 출력된 후에

postTbl에 동일 조인하여 출력하는 것은

LEFT OUTER JOIN이라고 한다.

 

반대로 오른쪽 테이블인 postTbl은

모두 출력한 뒤 동일 조인하여 출력해주는 것을

RIGHT OUTER JOIN이라고 한다.

 

그리고 비어있는 칸에는 null을 출력해준다.

 

동일 조인과 OUTER 조인이 같지만

OUTER 조인은 동일하지 않은 값도

포함해서 출력해준다.

 

즉, OUTER JOIN을 사용하는 이유는

일단 그 테이블에 있는 모든 데이터를

다 출력하기 위해서이다.

 

-- LEFT OUTER JOIN : love 까지 다 나오게
-- 왼쪽에 있는 테이블 다 보여달라
-- left outer join은 inner join과 결과가 같게 나올 수 있다.
SELECT * 
FROM userTbl u LEFT OUTER JOIN postTbl p
ON u.id = p.userId;

 

 

 

 

[출처]

 

https://cafe.naver.com/metacoding

 

메타코딩 : 네이버 카페

코린이들의 궁금증

cafe.naver.com

 

메타 코딩 유튜브

https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9

 

메타코딩

문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com

www.youtube.com

 

 

반응형