LEFT OUTER JOIN 설명

2024. 9. 8. 14:24·Category/Database
728x90

LEFT OUTER JOIN은 SQL에서 두 테이블을 결합할 때 사용되는 조인 방식 중 하나입니다. 이 조인은 왼쪽 테이블의 모든 행을 결과에 포함시키며, 오른쪽 테이블에서 일치하는 데이터가 있으면 결합하고, 일치하지 않으면 NULL 값을 포함시킵니다. 이를 통해 왼쪽 테이블의 모든 데이터를 항상 포함할 수 있습니다.

LEFT OUTER JOIN 설명

  1. 왼쪽 테이블:
    • 조인 연산에서 항상 포함되는 테이블입니다.
    • 만약 오른쪽 테이블에서 일치하는 데이터가 없더라도, 왼쪽 테이블의 데이터는 결과에 포함됩니다.
  2. 오른쪽 테이블:
    • 조인 연산에서 조건에 맞는 데이터를 제공하는 테이블입니다.
    • 왼쪽 테이블의 데이터와 일치하지 않으면, 결과에서 NULL 값을 포함합니다.
  3. 결과:
    • 왼쪽 테이블의 모든 행이 결과에 포함되며, 오른쪽 테이블에서 일치하는 행이 있으면 결합되고, 일치하지 않으면 NULL로 표시됩니다.

예시와 설명

주어진 예제 코드를 보면, LEFT OUTER JOIN을 사용하는 방식이 다음과 같습니다:

select
    distinct q.id,
    q.author_id,
    q.content,
    q.create_date,
    q.modify_date,
    q.subject 
from question q 
left outer join site_user u1 on q.author_id=u1.id 
left outer join answer a on q.id=a.question_id 
left outer join site_user u2 on a.author_id=u2.id 
where
    q.subject like '%스프링%' 
    or q.content like '%스프링%' 
    or u1.username like '%스프링%' 
    or a.content like '%스프링%' 
    or u2.username like '%스프링%';

이 쿼리는 question 테이블을 기본 테이블로 하고, site_user와 answer 테이블을 각각 왼쪽 외부 조인하고 있습니다.

각 조인의 설명:

  1. left outer join site_user u1 on q.author_id=u1.id:
    • question 테이블의 author_id와 site_user 테이블의 id를 기준으로 왼쪽 외부 조인을 수행합니다.
    • 이 조인은 질문(question)의 작성자 정보를 가져옵니다.
    • 만약 작성자 정보가 없더라도 질문은 결과에 포함됩니다.
  2. left outer join answer a on q.id=a.question_id:
    • question 테이블의 id와 answer 테이블의 question_id를 기준으로 왼쪽 외부 조인을 수행합니다.
    • 이 조인은 질문에 연결된 답변 정보를 가져옵니다.
    • 만약 답변이 없더라도 질문은 결과에 포함됩니다.
  3. left outer join site_user u2 on a.author_id=u2.id:
    • answer 테이블의 author_id와 site_user 테이블의 id를 기준으로 왼쪽 외부 조인을 수행합니다.
    • 이 조인은 답변 작성자 정보를 가져옵니다.
    • 만약 답변 작성자 정보가 없더라도 해당 답변과 연결된 질문은 결과에 포함됩니다.

WHERE 절:

  • WHERE 절에서 LIKE 연산자를 사용하여 질문 제목, 질문 내용, 질문 작성자, 답변 내용, 답변 작성자에 키워드가 포함된 데이터를 필터링합니다.

요약

  • LEFT OUTER JOIN은 왼쪽 테이블의 모든 데이터를 결과에 포함시키며, 오른쪽 테이블에서 일치하는 데이터가 있으면 결합하고, 없으면 NULL로 표시합니다.
  • 이 조인을 사용하면 데이터의 모든 항목을 보존하면서 관련된 정보를 추가로 가져올 수 있습니다.
  • 예를 들어, 질문이 있고 그에 대한 답변이 없더라도 질문은 결과에 포함되며, 답변과 관련된 데이터는 NULL로 표시됩니다.
728x90

'Category > Database' 카테고리의 다른 글

이너 조인(inner join)이란?  (0) 2024.09.08
아우터 조인(outer join)이란?  (0) 2024.09.08
'Category/Database' 카테고리의 다른 글
  • 이너 조인(inner join)이란?
  • 아우터 조인(outer join)이란?
Corinee
Corinee
  • Corinee
    Coding Note
    Corinee
  • 전체
    오늘
    어제
    • 분류 전체보기 (361)
      • Category (354)
        • Algorithm (7)
        • SQL (2)
        • Java (4)
        • C (9)
        • React (7)
        • JavaScript (9)
        • CSS (2)
        • Node (1)
        • SpringBoot (26)
        • Database (3)
        • Network (1)
        • Django (6)
        • Python (22)
        • Flask (4)
        • iOS (25)
        • Swift (4)
        • Flutter (11)
        • Dart (3)
        • Git (1)
        • Firebase (1)
        • Gof (1)
        • 정보처리기사 (112)
        • AI (5)
        • NestJs (4)
        • Docker (1)
        • 사이드 프로젝트 (1)
        • Note (80)
        • Socket (1)
        • 개인 정보 처리 방침 (1)
        • 면접 (0)
        • Vue.js (0)
      • Archive (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    json.parse(json.stringify())
    structuredclone()
    inp
    쉽게 풀어쓴 C언어 Express
    intellij 콘솔 한글 깨짐
    mermaid-cli
    Collections
    react router
    named export vs default export
    소프트웨어 버전 관리
    ajax (asynchronous javascript and xml)
    stdlib.h
    Jest
    core web vitals
    counter
    public vs assets
    시맨틱 버전(semantic versioning
    semver)
    jackson 라이브러리
    chrome extension 자동 배포
    중첩 함수(nested function)
    프로세스 강제 종료
    react
    x.y.z (메이저.마이너.패치)
    mcp server
    styled-components
    원시값(primitive)
    useEffect
    defaultdict
    math.h
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Corinee
LEFT OUTER JOIN 설명
상단으로

티스토리툴바