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
메타 코딩 유튜브
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9