JPA와 Querydsl은 from절의 서브쿼리(인라인 뷰)는 지원하지 않는다.
[해결 방안]
1. 서브쿼리를 join으로 변경한다(거의 대부분 가능하다.).
2. 애플리케이션에서 쿼리를 2번 분리해서 실행한다.
3. nativeSQL을 사용한다...
[From절에 서브쿼리를 사용하는 이유]
1. 화면에서 데이터를 보여주기 위한 로직이나 포멧팅을 쿼리에서 많이 처리함
2. 쿼리에서 모든 걸 해결하려고 함
DB는 필터링 및 그룹핑하여 데이터를 가져오는 용도로만 사용하는 것이 좋음(재활용성++)
로직은 애플리케이션이나 프레젠테이션에서 해결해야 함
정말 복잡한 쿼리의 경우 차라리 여러 차례 쿼리를 나누어 실행하고
비즈니스 로직에서 목표한바를 이루는 것이 좋을 가능성이 높다.
Case문은 사용 여부를 고민해야 함
쿼리의 목적은 다시 말하지만 필터링과 그룹핑이 주 목적임
어쩔 수 없이 사용해야할 때가 분명히 있긴 하지만 쿼리는 최대한 순수 데이터를 추출하는데 이용하고
데이터 표현 로직은 서버나 화면에서 해주는 것이 좋다.