• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    해결됨

INNER JOIN 강의 질문

23.11.23 15:45 작성 조회수 133

1

안녕하세요 선생님 INNER JOIN 문제에 대해 해석이 잘안되어서 질문하게 되었습니다..

조인하기 전에 서브쿼리를 넣어서 쿼리를 완성하는지에 대해 궁금합니다 ㅠ 문제 자체를 잘 이해 못하고 있는거 같기도한데 상세한 설명 부탁드리겠습니다...

 

답변 2

·

답변을 작성해보세요.

1

합격가자 님 안녕하세요:)

Very Easy 섹션의 join 강의와 Easy 섹션의 inner join 강의를 비교해보니, 전자는 바로 테이블명으로 쓰고 후자는 서브쿼리를 써서 헷갈리신 것 같네요!

아래 설명 추가하였습니다. 아래 설명이 이해가 안가시면, 다시 한번 편하게 질문 부탁드립니다~


문제를 이해했다는 가정하에 설명을 드려볼께요.

테이블명을 바로 쓰든, 서브쿼리를 했든, join에서 둘다 가능합니다.

SELECT *

FROM SALES AS S -- S: table alias

INNER JOIN PRODUCT AS P -- P: table alias

ON S.PRODUCT_ID = P.PRODUCT_ID;

위와 같이 바로 테이블명을 썼지만, 이것은 아래 서브쿼리처럼 풀어쓴 것과 똑같습니다.

SELECT *

FROM
(
   SELECT *
   FROM SALES
) AS S
INNER JOIN
(
   SELECT *
   FROM PRODUCT
) AS P

ON S.PRODUCT_ID = P.PRODUCT_ID;

문제 2.0.1을 이해하지 못했다는 가정하에 설명을 드려볼께요.

Write an SQL query to get the names of products that have at least 100 units ordered in February 2020 and their amount.

 

  1. names of products는 Products 테이블에 있고, 팔린 날짜(=order date)와 팔린 개수(=unit)는 Orders 테이블에 있기 때문에, 이 두 테이블을 이어줘야 합니다. 그래서 inner join을 product_id 기준으로 이어줍니다.

  2. 그전에, products that have at least 100 units ordered in February 2020 and their amount 이 부분을 Orders 테이블만 이용해서 서브쿼리로 만듭니다.

     

image3. 최종 정답은 위 서브쿼리 결과 중 product_id 컬럼이 아니라, product_name 컬럼입니다. 그래서 마무리 단계에서 Products 테이블과 inner join을 해주면서 product_name과 unit을 출력합니다.

 

0

친절한 답변 정말 감사합니다. 이해가 쏙쏙 잘되서 강의 퀄리티가 너무 좋다고 생각이드네요! 시간적여유가 괜찮으시다면 프로그래머스 문제를 통해 문제풀이를 하는 강의도 출시하시면 좋다고 생각이 듭니다 ! 코딩테스트를 준비하는 사람들은 프로그래머스 쪽 문제를 많이 풀다보니 이러한 상세한 해설이 뒷받침 된다면 많은 도움이 되지 않을까 싶어서요!(저작권 문제가 있다면 어쩔수 없구요 ㅠ )

 

취업을 SQL 개발자 직무 쪽도 생각하고 있는데 다른 강의도 저에게 도움이 된다면 잘 활용하여 역량을 키우는데 도움을 받겠습니다. 감사합니다!

오오 상세한 피드백 너무 감사 드립니다:)

내년 초에 pandas(python으로 하는 SQL) 강의를 기획 중이였는데요.

하반기쯤에는 프로그래머스 문제로 SQL 코딩테스트를 준비해서, 현재 강의에 추가하는 식으로 준비해보겠습니다.

다시 한번 피드백 너무 감사드리고, 질문 있으면 언제든지 질문 편하게 주세요~