강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của imjieun24
imjieun24

câu hỏi đã được viết

Phân tích dữ liệu SQL Fundamentals

Hiểu về tham gia bên trong, tham gia bên ngoài trái/phải và tham gia bên ngoài đầy đủ

섹션2 조인 기반 메커니즘에서 조인 실습 - 04 강의 예제 질문

Viết

·

118

·

Đã chỉnh sửa

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로 끌어와도 괜찮은지 궁금합니다.

결과는 동일하게 나오는데 혹시나 차이가 있는지 궁금합니다.

sqlpostgresqldbms/rdbms

Câu trả lời 2

0

dooleyz3525님의 프로필 이미지
dooleyz3525
Người chia sẻ kiến thức

안녕하십니까,

적어주신 SQL로는 뭘 변경하고 싶으신건지 제가 잘 이해하지 못했습니다.

원본 실습 SQL에서 뭘 바꾸셨는지 좀 더 상세히 기술해 주십시요. 그리고 table alias 도 변경하지 마시고 원본 실습 SQL과 동일한 alias 명으로 주시고, 변경된 부분에 대해서는 Bold하게 표시해 주십시요.

감사합니다.

JE님의 프로필 이미지
JE
Người đặt câu hỏi

네 질문 수정하였습니다!

dooleyz3525님의 프로필 이미지
dooleyz3525
Người chia sẻ kiến thức

네, select 절에 사용 시 order_item의 product_id이든 product의 product_id 이든 아무거나 사용하셔도 무방합니다. 왜냐하면 product_id로 두 테이블 모두 모두 동일한 조건으로 join 되었기 때문입니다.

JE님의 프로필 이미지
JE
Người đặt câu hỏi

네 답변 감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. JE님, 질문 주셔서 감사합니다.

당신의 질문은 SQL 쿼리에서 product_idorder_items 테이블이 아닌 products 테이블에서 가져와도 괜찮은지에 대한 것입니다. 이 경우의 차이를 살펴보겠습니다.

  1. 참조 무결성: order_items 테이블에서 product_id는 보통 products 테이블의 product_id와 일대일 참조 관계가 있습니다. 그러므로 두 테이블에서 동일한 product_id 값을 가져오게 되며 SQL 결과에는 영향을 미치지 않습니다.

  2. 퍼포먼스: 쿼리 성능에는 차이가 없습니다. 두 테이블 간의 외래 키 관계가 제대로 설정되어 있다면, JOIN 을 통해 데이터를 가져올 때 product_idorder_items 또는 products 테이블 어느 쪽에서 가져와도 성능 상 차이가 나지 않습니다.

  3. 명확성: SQL 쿼리에서는 명확성이 중요합니다. 따라서 order_items 테이블에서 product_id를 가져오는 것이 더 직관적입니다. 왜냐하면 order_itemsproduct_id가 실제로 사용하는 곳이기 때문입니다. 그러나 실제 데이터 무결성을 유지하고 있으며 JOIN 조건이 올바르다면, products 테이블에서 가져와도 실질적인 차이는 없을 것입니다.

이미 이전에 유사한 질문 및 답변이 있어 관련 링크를 공유합니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hình ảnh hồ sơ của imjieun24
imjieun24

câu hỏi đã được viết

Đặt câu hỏi