Spring

15. 조인

공대키메라 2021. 7. 24. 17:54

 

  1. 내부조인 : SELECT m FROM Member m [INNER] JOIN m.team t
  2. 외부조인 : SELECT m FROM Member m LEFT [OUTER] JOIN m.team t
  3. 세타 조인 : select count(m) from Member m, Team t where m.username = t.name

 

 

 

1. 조인 대상 필터링

 예) 회원과 팀을 조인하면서, 팀 이름이 A인 팀만 조인

 

JPQL :

SELECT m, t FROM Member m LEFT JOIN m.team t on t.name = 'A'

 

실행된 SQL :

SELECT m.*, t.* FROM

Member m LEFT JOIN Team t on m.TEAM_ID = t.id and t.name = 'A'

 

2. 연관관계 없는 엔티티 외부 조인

  예) 회원의 이름과 팀의 이름이 같은 대상 외부 조인

 

JPQL : 

SELECT m, t FROM

Member m LEFT JOIN Team t on m.username = t.name

 

실행된 SQL :

SELECT m.*, t.* FROM
Member m LEFT JOIN Team t on m.username = t.name

 

서브쿼리

- 나이가 평균보다 많은 회원

SELECT m FROM Member m

WHERE m.age > (select avg(m2.age) from Member m2)

 

- 한 건이라도 주문한 고객

SELECT m FROM Member m 

WHERE (select count(o) from Order o WHERE m = o.member) > 0

 

 

 

 

 

 

JPQL 타입 표현 

 

 

 

'Spring' 카테고리의 다른 글

스프링부트 & jpa1 / 1 - 프로젝트 생성  (0) 2021.07.25
16. 경로 표현식 / 페치조인  (0) 2021.07.25
14. 기본 문법과 쿼리 API  (0) 2021.07.24
13. 객체지향 쿼리 언어(JPQL)  (0) 2021.07.24
12. 값 타입의 비교 ~  (0) 2021.07.22