• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

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

24.05.17 22:46 작성 조회수 52

1

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

답변 1

답변을 작성해보세요.

2

OMG님의 프로필

OMG

2024.05.18

안녕하세요. 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

 

감사합니다.

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