inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 데이터베이스 - 기본편

문제와 풀이

ON을 명시하지 않았을 경우 질문드립니다.

56

yoon6669

작성한 질문수 90

0

문제 3번을 풀다가

select *
from orders o
inner join users as u on o.user_id=u.user_id
inner join products as p;

이러한 쿼리를 작성하게 되었습니다.

실행 결과로 오류 없이 테이블이 나왔습니다.

그래서 이걸 바탕으로 문제를 풀었다가 결과가 답안과 달라 문제점을 찾다가 on o.product_id=p.product_id 을 작성하지 않은 잘못된 쿼리라는 것 알았습니다.

여기서 질문이 있습니다.

inner join이 공통된 부분을 join하는 것이라고 하셨는데,

orders와 users를 조인 후 products를 조인 할 때 제가 작성한 쿼리의 경우 연결 조건인 ON을 지정하지 않았는데 어떻게 join하여 결과 테이블이 나올 수 있는 것인가요?

 

 

 

sql mysql dbms/rdbms SQLD

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. yoon6669님.

질문에서 언급하신 상황에 대해 설명드리겠습니다. SQL에서 INNER JOIN을 사용할 때는 보통 두 테이블 간의 조인 조건을 명시하는 것이 일반적입니다. 조인 조건은 ON 절을 통해 어느 컬럼을 기준으로 두 테이블을 연결할지를 지정하는 것입니다.

하지만, 작성하신 쿼리에서 ordersproducts를 조인할 때 ON 조건을 명시하지 않으셨습니다. 이 경우, 카티전 곱(Cartesian Product) 이 발생하여 두 테이블의 가능한 모든 조합을 결과로 반환하게 됩니다.

  • INNER JOINON 조건을 명시하지 않으면 두 테이블의 각 행이 서로 조합되어 많은 수의 결과를 반환할 수 있습니다. 결과적으로, ‘조인’의 의미가 없어지고, 원하지 않는 결과를 얻게 됩니다.

“INNER JOIN’에서 ‘ON’ 절이 없을 경우 쿼리는 카티전 곱을 생성하며, 이는 메모리와 성능 측면에서 비효율적일 뿐만 아니라 원하는 결과를 반환하지 못할 수 있습니다. 따라서 항상 조인 조건을 명확히 지정하는 습관을 들이는 것이 중요합니다.

두 테이블을 올바르게 조인하기 위해서는 두 테이블 간의 연관된 필드에 대해 ON 절을 사용하여 조인 조건을 설정해야 합니다.

추가적으로 더 설명이나 예시가 필요하시다면, 아래 유사한 예제를 참고해 보시기 바랍니다:

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

간단한 오타 제보입니다.

0

2

0

강의 2:53 union을썼는데도 션이 중복

0

57

1

where 대신 having을 써도 되나요?

0

79

1

주문 내역에 대한 고객 데이터

0

60

2

in 수행

0

43

1

외부조인1 강의 관련 질문

0

71

3

커버링 인덱스와 랜덤i/o 질문

0

69

1

오타인거죠?

0

78

1

섹션 3 퀴즈 3번 문제

0

74

2

GROUP BY 기준 컬럼

0

84

1

질문이 있습니다

0

54

1

오타

0

78

2

실제 상용 서비스 질문

0

97

1

파티셔닝 관련 질문입니다.

0

57

1

join 문제 풀이2 문제1(self join) 질문

0

64

1

9. 인덱스2.pdf 중에서

0

77

1

문제 2번

0

66

2

문제와 풀이1 - 3번 문제

-1

70

2

잘 사용하진 않지만 풀 외부 조인을 사용하신 사례가 궁금합니다!

0

91

1

[58. 인덱스와 정렬]을 듣다가 질문입니다.

0

93

2

두개 이상의 테이블을 조인할때 인덱스 질문이 있습니다.

0

59

1

파일을 만드는 단위가 궁금해요

0

70

1

MySQL은 실무에서 사용하는 케이스도 있을까요?

0

80

1

JOIN 방향에 따른 결과 행수와 효율적 데이터 조회 방법 질문

0

77

1