인프런 커뮤니티 질문&답변

Jaesang Yoon님의 프로필 이미지
Jaesang Yoon

작성한 질문수

실전! Querydsl

프로젝션과 결과 반환 - DTO 조회

서브 쿼리기 때문에 이름이 없다고 하신 이유에 대해 질문드립니다.

해결된 질문

작성

·

120

1

프로젝션과 결과 반환 - DTO 조회 강의의 15:23에서 '서브쿼리이기 때문에 이름이 없다'고 하신 부분이 이해가 가지 않아서 추가 설명해주시면 감사하겠습니다 🙂

답변 1

2

안녕하세요. Jaesang Yoon님, 공식 서포터즈 OMG입니다.

간단한 예시 쿼리로 설명드리겠습니다.

첫번째 쿼리의 첫번째 출력 필드(컬럼)의 출력 명칭 USERNAME입니다.

두번째 쿼리의 첫번째 출력 필드(컬럼)의 출력 명칭은 NAME입니다.

반면 두번째 출력인 서브쿼리의 경우 명칭(=대상을 부르는 이름)을 부여하기에는 테이블의 대상 컬럼이 아니기에 없다고 표현 하신 것 같습니다. (실제 SQL에서 서브쿼리에 as로 별도의 명칭 부여가 가능합니다.)

SELECT
   M.USERNAME
,  (SELECT MAX(M.AGE)) 
FROM MEMBER M
SELECT
   M.USERNAME AS NAME
,  (SELECT MAX(M.AGE)) 
FROM MEMBER M

그렇기에 바로 다음 설명에서 ExpressionUtil로 age라는 별도의 명칭을 부여했다고 설명하신 것입니다.

image

image

즉 QueryDSL의 프로젝션에서도 이렇게 명칭을 부여하는 방식에 대한 설명으로 이해하시면 됩니다.

SELECT
   (SELECT MAX(M.AGE)) AS AGE
FROM MEMBER M

 

감사합니다.

Jaesang Yoon님의 프로필 이미지
Jaesang Yoon
질문자

상세한 답변 감사드립니다. OMG님 덕분에 명쾌하게 해결됐습니다!!
주말 잘 보내세요 🙂

Jaesang Yoon님의 프로필 이미지
Jaesang Yoon

작성한 질문수

질문하기