책 내용 질문하기
OUTER JOIN 질문
도서
2022 시나공 정보처리기능사 실기
페이지
435
조회수
156
작성일
2022-10-23
작성자
탈퇴*원
첨부파일

해당 페이지에 수록된 문제4(20년 6월) 문제에서 빈칸에 들어갈 답으로 OUTER JOIN인 것은 빈칸 앞 LEFT로 인해 알 수 있었습니다.

다만 앞에 개념 설명에서 OUTER JOIN의 경우 무관한 튜플에 NULL 값을 추가하여 결과에 추가한다는 부분이 헷갈려서 질문 드립니다.

 

이 문제의 경우 topic의 id와 auth의 id가 전부 매칭이 되기 때문에 NULL값을 사용하지 않아도 되는 것은 알겠으나,

그럼 이렇게 NULL값이 필요하지 않고 전부 매칭이 되는 경우에 왜 OUTER JOIN을 사용한 것인지 궁금합니다.

 

해당 부분으로 SQL 작성 시 INNER JOIN으로 실행해도 같은 결과가 나오게 되는 것이 맞을까요?

답변
2022-10-24 11:31:14

안녕하세요 길벗수험서 운영팀입니다.

 

말씀과 같이 해당 문제에서는 outer join이 아닌 inner join을 써도 무관합니다.

 

outer join의 경우 inner join으로 인해 손실될 튜플들을 보전하기 위해 사용되며,

일반적으로 조인하는 대상(문제의 경우 <auth>)을 정확하게 파악하지 못한 경우가 많습니다.

 

예를 들어, 학생 정보가 기록된 <학생명부>가 있고, 이번 시험 성적을 기록한 <성적>이 있을 때,

이를 병합하기 위해 <학생명부> left outer join <성적>을 했다고 가정하죠.

 

이 때 outer join을 쓴 것은 혹시나 <학생명부>에 놓친 학생이 있어서 <성적>이 기록되지 않는 것을 방지하기 위함이죠.

(학생명부가 완벽하게 작성되었다면 이럴 필요없이 inner join을 쓰면 되겠지만요.)

 

행복한 하루되세요 :)

  • 관리자
    2022-10-24 11:31:14

    안녕하세요 길벗수험서 운영팀입니다.

     

    말씀과 같이 해당 문제에서는 outer join이 아닌 inner join을 써도 무관합니다.

     

    outer join의 경우 inner join으로 인해 손실될 튜플들을 보전하기 위해 사용되며,

    일반적으로 조인하는 대상(문제의 경우 <auth>)을 정확하게 파악하지 못한 경우가 많습니다.

     

    예를 들어, 학생 정보가 기록된 <학생명부>가 있고, 이번 시험 성적을 기록한 <성적>이 있을 때,

    이를 병합하기 위해 <학생명부> left outer join <성적>을 했다고 가정하죠.

     

    이 때 outer join을 쓴 것은 혹시나 <학생명부>에 놓친 학생이 있어서 <성적>이 기록되지 않는 것을 방지하기 위함이죠.

    (학생명부가 완벽하게 작성되었다면 이럴 필요없이 inner join을 쓰면 되겠지만요.)

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.