Junit Test Application-44-left join(left outer join)하는 이유

jaegeunsong97·2023년 8월 10일
0
post-thumbnail

Junit Bank Application 깃허브

Junit Bank Application 기록 노션

드라이빙 테이블, 드리븐 테이블 차이 이해

left join(left outer join)

JPQL 이면 left join, native 쿼리면 left outer join

게시글 목록 보기에서 left join(left outer join)이면 일단 Board의 모든 내용을 뿌린다. 그러면 모든 Board를 가져오고 Board에 빈 값이 있는 경우 전부 null 처리를 한다. 따라서 Board 내부에 Love가 있고 연관관계가 없으면 빈 하트가 되는 원리

결론 left join(left outer join)은 전부 가져온다

inner join, left join(left outer join)

  • inner join

inner join은 null이 아닌 것들만 찾아온다.

입금내역 조회 또는 출금 내역을 조회할 때는 inner join을 사용, 왜냐하면 컬럼만 가져오니까

  • left join(left outer join)

  • 만약 transaction table에서 inner join으로 2개의 컬럼을 하고 account가 2번을 찾으면?

1번째 inner join -> withdrawAccountId 에서 1, 3, 4, 5 가져옴 (inner join은 null 가져오지 않음)

2번쨰 inner join -> depositAccountId 에서 1, 3, 4, 5 중에서 3, 4, 5만 가져옴 (null 제외 + 1번째 inner join 할떄 2번 row는 없어져 버림)

따라서 원래는 id가 2번 5번을 가져와야 하지만 inner join을 사용하면 2번은 1번째 inner join 에서 사라지고 5번만 남게 된다.

  • 하지만 left join(left outer join)을 하면?

null 포함 전부 찾아온다. 그리고 필요한 것들만 가져온다.

profile
블로그 이전 : https://medium.com/@jaegeunsong97

0개의 댓글