- 내부조인 : SELECT m FROM Member m [INNER] JOIN m.team t
- 외부조인 : SELECT m FROM Member m LEFT [OUTER] JOIN m.team t
- 세타 조인 : 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 |