Cộng đồng Hỏi & Đáp của Inflearn
외부조인1 강의 관련 질문
Viết
·
47
0
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 네
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네
[질문 내용]

외부 조인1 강의 듣다가 궁금한게 생겼는데요.
(A 집합을 왼쪽, B 집합을 오른쪽)
강의에서 LEFT JOIN의 경우는 집합 그림상으로도 그렇고
A(왼쪽 집합) 의 전체 데이터 + B에서 조건에 해당하는 데이터라면,
B에 해당하는 부분은 사실상 A와 B의 교집합이고
A에는 항상 A와 B의 교집합 부분이 들어가 있기때문에 추가적으로 들어오는 A(AND)B 교집합 부분은 의미없는 데이터고 결국엔 집합 A랑 다를게 없는거 아닐까요??
좀 이해가 안되서 질문 드립니다.
Câu trả lời 3
1
안녕하세요. 박준혁님
수학의 '집합' 개념(요소의 유무)으로만 접근하면 생각하신 내용이 맞습니다 🙂
하지만 데이터베이스의 JOIN은 단순한 집합론과는 조금 다릅니다.
핵심부터 말씀드리면, JOIN은 단순히 '행(Row)'을 합치는 것이 아니라, 서로 다른 테이블의 '열(Column, 정보)'을 옆으로 이어 붙이는 작업이기 때문입니다.
첨부해주신 그림의 users(A)와 orders(B) 테이블을 예시로 들어보겠습니다.
1. 왜 B(교집합)의 데이터가 의미 없는 데이터가 아닐까?
데이터베이스에서 A 테이블과 B 테이블은 서로 가지고 있는 '정보의 종류(컬럼)'가 다릅니다.
A (users) 테이블이 가진 정보: 유저 번호, 이름, 가입일 등 (유저 그 자체에 대한 정보)
B (orders) 테이블이 가진 정보: 주문 번호, 주문한 유저 번호, 주문 상품명 등 (주문 내역에 대한 정보)
"교집합 부분이 이미 A에 들어가 있다"고 하신 것은 '유저 번호(1~5번)'라는 기준(Key)에 대한 이야기입니다. 하지만 LEFT JOIN을 통해 우리가 얻고자 하는 것은 A 테이블(유저 정보) 옆에 B 테이블(주문 정보)을 가져와서 붙이는 것입니다.
즉, A 테이블만 보면 이 유저들이 "어떤 상품을 주문했는지"는 알 수 없습니다. B 테이블과 조인(교집합 생성)을 해야만 비로소 유저 정보 옆에 주문 상품 정보가 따라붙게 되는 것이죠.
여기서 예를 들어서 1~5번의 경우에는 유저 이름과 주문한 상품명이 모두 포함됩니다. 하지만 6번의 경우에는 유저 이름은 있지만, 상품명이 포함되지 않습니다.
감사합니다.
0
0
안녕하세요, 인프런 AI 인턴입니다. 박준혁님 질문에 대해 답변 드리겠습니다.
LEFT JOIN을 이해하기 위해서는 JOIN의 목적과 동작 방식을 명확히 이해하는 것이 중요합니다. LEFT JOIN은 “왼쪽 테이블(A)의 모든 행과 오른쪽 테이블(B)에서 조건을 만족하는 행을 결합”하는 방식입니다. 이때, B에서 조건을 만족하지 않는 경우에도 A의 데이터는 모두 포함됩니다.
즉, A 테이블에는 B 테이블과 매칭되지 않는 행도 포함되어 있다는 점에서, INNER JOIN과는 차이가 있습니다. INNER JOIN의 경우는 매칭되는 행만 포함되기 때문에 A와 B의 교집합만을 반환하지만, LEFT JOIN에서는 A의 모든 데이터를 가져오고, 여기에 B와 매칭되는 데이터를 추가하는 방식입니다.
강의의 내용을 좀 더 구체적으로 이해하시려면 다음 자료를 참고해 보세요.
이는 LEFT JOIN의 개념을 시각적으로 이해하는데 도움이 될 것입니다. 이미지를 보면 두 테이블 간 매칭되지 않는 데이터도 포함된다는 것을 명확히 알 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




