작성
·
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로 기입이 되어있나요?
→ 다 같은 질문 내용입니다. 지정해도 안해도 상관 없지만, 지정해주는 것이 좋습니다.
향후 소스 코드 업데이트 하겠습니다.
감사합니다.
답변 감사합니다!
남은 강연도 잘 듣도록하겠습니다 ㅎ