leftjoin에 관한 질문입니다.
335
작성한 질문수 22
처음에 N+1을 해결하시기전에 tag만 leftjoin으로 보여주시고 중복되는 row를 보여주시는 부분에서 질문이있습니다.
해당 sql문이 동작하는 방식이 아래인것같은데
where문이 먼저 study중 jpa가 들어간 study만 조회해온다.
후에 해당 study 에 연관된 애들만 fetch join해서 가져온다.
궁금한것은 왜
join먼저 되고 where문이 걸러주지 방식으로 동작하지 않는건가요..? 원래 이 방식이 sql 문에 join 과 where을 같이 썼을때 동작하는 방식이 아닌가요..?
답변 3
0
데이터는 이 수업에서도 where 절이 걸러준거에요.
테이블이 세개여서 조금 복잡한데요. 스터디, 스터디_태그, 태그 이렇게 세개인데 이 세개를 왼쪽 기준으로 합치는 쿼리를 만들었죠. 왼쪽 조인이니까 where 조건 (jpa 태그를 가지고 있거나 스터디 타이틀에 jpa가 있는 데이터)으로 걸러낸 데이터를 왼쪽 테이블 들 (스터디와 스터디_태그) 기준으로 출력하는 과정에서 세줄이 되었고 그 중에 한 줄에 spring 태그가 들어간 겁니다.
좀 더 자세히 설명드리자면, 태그 기준으로 보면 1개의 데이터(jpa 태그)를 찾았는데 그 한 데이터는 2개의 스터디_태그와 연결되어 있습니다. 그리고 다시 그 두개의 스터디_태그는 2개의 스터디와 연결이 되죠.
자 그럼 이제 합쳐서 출력해야 하는데 왼쪽 기준이니까 스터디 데이터 2개, 해당 스터디가 가지고 있는 스터디_태그 데이터가 3개 (여기서 세줄이 됩니다) 그리고 각각의 스터디_태그에 연결되어 있는 태그들을 출력합니다.
첫번째 줄은 1번 스터디의 1번 스터디_태그에 연결된 1번 태그 (spring).
두번째 줄은 1번 스터디의 2번 스터디_태그에 연결된 2번 태그 (jpa)
세번째 줄은 1번 스터디의 3번 스터디_태그에 연결된 2번 태그 (jpa)
첫번쨰 줄을 보고 where절이 적용 안된거 아니냐고 생각하시는 것 같은데요. 적용이 되었기 때문에 나온겁니다. jpa 태그나 타이블에 jpa가 없는 스터디를 만들어서 테스트 해보시면 해당 데이터가 걸려져서 아에 출력이 안되는걸 볼 수 있을 겁니다.
0
지금 여기서 중복 row가 보이는 이유가 where 절 실행 순서랑 관련이 있나요?
0
https://stackoverflow.com/questions/354070/sql-join-where-clause-vs-on-clause

위 링크의 2번째 답변을 보고 궁금증이 생겨서 여쭤봤습니다.
해당 답변에서 where가 강의의 쿼리처럼 뒤에 존재하는데
처음에 leftjoin 결과를 보여주고 where 문 때문에 중복이 걸러지는 것을 보여줍니다.
왜 강의에서 where는 jpa 태그만 가진 study만을 보여주지 않는지 궁금했습니다.
Study 개설하는 로직에 대해서 궁금점이 있습니다.
0
56
1
앱 재시작 후 회원가입
0
104
1
app.host 관련 질문이 있습니다
0
98
1
강의 버전 정보
0
127
1
event, study 참조
0
222
2
비밀번호 변경 로직 질문있습니다.
0
136
1
프로필 수정 처리 merge 질문입니다.
0
108
1
회원가입 성공 후 redirect이동시 권한 질문
0
497
3
HtmlEmailService 개발하다 생긴 의문입니다
0
252
2
postgreSql 연결하여 JPA 를 통해 테이블 생성시 ZONE 테이블 생성에서 에러가 납니다
0
432
2
수업질문 [긴급] 로그인안되는 문제 말씀해주시는 부분 반영해서 최종 질문드립니다
0
264
2
[긴급-재업로드]수업질문 로그인 안 되는 문제
0
237
1
[긴급] 로그인해도 네비게이션 바가 안 바뀌고 있습니다!! 로그인이 안 됩니다 도와주세요
0
278
1
cropper 오류 문제로 질문드립니다..
0
289
2
authentication관련 질문...
0
498
2
모임참가 취소 할때 로직 질문
0
351
3
안녕하세요 기선님 질문이있습니다..
0
230
1
HTML코드 및 강의 중간자료들
0
680
3
springSecurity
0
525
2
버전 질문입니다.
0
304
1
부트스트랩, css
0
357
2
영속성 컨텍스트 질문
0
252
2
다시 강의를 보니 드는생각..
0
355
2
5:50에 나오는 HTML코드는 어디서 찾을 수 있나여?
0
316
1





