작성
·
61
·
수정됨
0
안녕하세요.
섹션2 조인 기반 메커니즘에서
조인 실습 - 04 강의 중
예제에서 질문이 있습니다.
-- 고객명 Antonio Moreno이 1997년에 주문한 주문 상품 정보를 고객 주소, 주문 아이디, 주문일자, 배송일자, 배송 주소 및
-- 주문 상품 아이디, 주문 상품명, 주문 상품별 금액, 주문 상품이 속한 카테고리명, supplier명을 구할 것.
select
a.contact_name, a.address, b.order_id, b.order_date, b.shipped_date, b.ship_address, c.product_id, d.product_name, c.amount, e.category_name, f.contact_name as supplier_name
from nw.customers a
join nw.orders b on a.customer_id = b.customer_id
join nw.order_items c on b.order_id = c.order_id
join nw.products d on c.product_id = d.product_id
join nw.categories e on d.category_id = e.category_id
join nw.suppliers f on d.supplier_id = f.supplier_id
where a.contact_name = 'Antonio Moreno'
and b.order_date between to_date('19970101', 'yyyymmdd') and to_date('19971231', 'yyyymmdd')
이 예제에서 볼드친 product_id를 order_items 테이블이 아닌 products 테이블의 product_id로 끌어와도 괜찮은지 궁금합니다.
결과는 동일하게 나오는데 혹시나 차이가 있는지 궁금합니다.
답변 2
0
안녕하십니까,
적어주신 SQL로는 뭘 변경하고 싶으신건지 제가 잘 이해하지 못했습니다.
원본 실습 SQL에서 뭘 바꾸셨는지 좀 더 상세히 기술해 주십시요. 그리고 table alias 도 변경하지 마시고 원본 실습 SQL과 동일한 alias 명으로 주시고, 변경된 부분에 대해서는 Bold하게 표시해 주십시요.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. JE님, 질문 주셔서 감사합니다.
당신의 질문은 SQL 쿼리에서 product_id
를 order_items
테이블이 아닌 products
테이블에서 가져와도 괜찮은지에 대한 것입니다. 이 경우의 차이를 살펴보겠습니다.
참조 무결성: order_items
테이블에서 product_id
는 보통 products
테이블의 product_id
와 일대일 참조 관계가 있습니다. 그러므로 두 테이블에서 동일한 product_id
값을 가져오게 되며 SQL 결과에는 영향을 미치지 않습니다.
퍼포먼스: 쿼리 성능에는 차이가 없습니다. 두 테이블 간의 외래 키 관계가 제대로 설정되어 있다면, JOIN
을 통해 데이터를 가져올 때 product_id
를 order_items
또는 products
테이블 어느 쪽에서 가져와도 성능 상 차이가 나지 않습니다.
명확성: SQL 쿼리에서는 명확성이 중요합니다. 따라서 order_items
테이블에서 product_id
를 가져오는 것이 더 직관적입니다. 왜냐하면 order_items
는 product_id
가 실제로 사용하는 곳이기 때문입니다. 그러나 실제 데이터 무결성을 유지하고 있으며 JOIN
조건이 올바르다면, products
테이블에서 가져와도 실질적인 차이는 없을 것입니다.
이미 이전에 유사한 질문 및 답변이 있어 관련 링크를 공유합니다:
to_date
함수 사용에 대한 DBMS 종류와 인덱스 작동에 관한 중요한 설명이 담겨있습니다.저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
네 질문 수정하였습니다!