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

윤지훈님의 프로필 이미지
윤지훈

작성한 질문수

핵심만 쉽게, 모두의 SQL 비법 레시피

[SQL Recipe #5] 서브 패턴 (A) : WITH 문

with문 질문

작성

·

141

1

WITH cust_info AS (

SELECT customer_id, nls_language, nls_territory, gender

FROM OE.customers A

WHERE A.gender = 'M'

)

SELECT A.order_id, A.customer_id, SUM(A.order_total)

FROM OE.orders A, cust_info B

WHERE A.order_status = 4

AND A.order_mode = 'online'

AND A.customer_id = B.customer_id

GROUP BY A.order_id, A.customer_id

HAVING SUM(order_total) > 90000;

문의사항이 있어 남깁니다!.

 

질문1. with 문 안에 있는 FROM 절의 별칭 A 는 with 문 다음에 오는 FROM절의 별칭 A 에 영향이 없나요?

질문2. with 문 안에 있는 SELECT 절에서 gender는 왜 A.gender 가 아닌건지 궁금합니다.

질문3. 질문2이와 이어지는데, gender 일 때와 A.gender일 때의 차이가 있나요?

질문4. with 문 안에 있는 WHERE 절에는 왜 A.gender로 기입이 되어있나요?

 

답변 1

1

데이터셰프님의 프로필 이미지
데이터셰프
지식공유자

안녕하세요, 답변드립니다.

 

질문1. with 문 안에 있는 FROM 절의 별칭 A 는 with 문 다음에 오는 FROM절의 별칭 A 에 영향이 없나요?

→ 영향 없습니다.

 

질문2. with 문 안에 있는 SELECT 절에서 gender는 왜 A.gender 가 아닌건지 궁금합니다.

→ 명시적으로 'A.' 이라고 별칭을 지정하지 않아도, 테이블에 해당하는 열이 하나라면 오라클 DBMS가

묵시적으로 열을 찾아 출력해줍니다. 그래서 WITH 문 안에 쿼리는 이상없이 작동합니다.

하지만 명시적으로 별칭을 기입하는 것이 좋습니다.

해당 내용은 강의 영상 중반에 설명되어 있는데, 향후 스크립트는 다시 업데이트 하겠습니다.

질문3. 질문2이와 이어지는데, gender 일 때와 A.gender일 때의 차이가 있나요?

→ 이 경우에는 없습니다. 하지만 두개의 테이블에 같은 열 이름이 있다면 명시적으로 지정해줘야 에러가 안납니다.

질문4. with 문 안에 있는 WHERE 절에는 왜 A.gender로 기입이 되어있나요?

→ 다 같은 질문 내용입니다. 지정해도 안해도 상관 없지만, 지정해주는 것이 좋습니다.

향후 소스 코드 업데이트 하겠습니다.

감사합니다.

윤지훈님의 프로필 이미지
윤지훈
질문자

답변 감사합니다!

남은 강연도 잘 듣도록하겠습니다 ㅎ

윤지훈님의 프로필 이미지
윤지훈

작성한 질문수

질문하기