> 데이터 베이스 > MySQL 튜토리얼 > 세 개의 테이블을 사용하여 MySQL LEFT JOIN을 효율적으로 수행하는 방법은 무엇입니까?

세 개의 테이블을 사용하여 MySQL LEFT JOIN을 효율적으로 수행하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-02 22:22:39
원래의
621명이 탐색했습니다.

How to Efficiently Perform a MySQL LEFT JOIN with Three Tables?

세 개의 테이블을 사용한 MySQL LEFT JOIN 이해

문제 설명

세 개의 테이블을 고려합니다.

  • Persons(PersonID, 이름, SS): 다음에 대한 정보를 포함합니다. 개인.
  • Fears(FearID, Fear): 다양한 두려움을 나열합니다.
  • Person_Fear(ID, PersonID, FearID): 개인을 관련 두려움과 연결합니다.

목표는 모든 개인과 관련된 두려움을 표시하는 것입니다(개인이 두려움을 느끼지 못하는 경우 포함). Fears).

쿼리 문제 분석

제공된 쿼리는 테이블 조인에 대해 잘못된 스키마를 나타냅니다.

SELECT persons.name, 
       persons.ss, 
       fears.fear 
FROM   persons 
       LEFT JOIN fears 
              ON person_fear.personid = person_fear.fearid 
로그인 후 복사

ON 절이 Person_Fear 테이블 조인을 잘못 시도합니다. Fears와 연결되는 컬럼인 FearID가 PersonID로 변경되었습니다.

개선됨 해결책

왼쪽 조인을 효과적으로 수행하려면 다음 접근 방식을 고려하십시오.

SELECT Persons.Name, Persons.SS, Fears.Fear
FROM Persons
LEFT JOIN Person_Fear
    INNER JOIN Fears
    ON Person_Fear.FearID = Fears.FearID
ON Person_Fear.PersonID = Persons.PersonID
로그인 후 복사

설명:

  • Persons 테이블이 왼쪽에 있습니다. Person_Fear.PersonID =에서 Person_Fear에 합류했습니다. Persons.PersonID.
  • 중첩된 INNER JOIN은 Person_Fear.FearID = Fears.FearID.
  • 이 구조를 통해 Person_Fear와 Fears를 연결하며, 관련 두려움이 없는 레코드도 포함됩니다.

대안 쿼리:

동일한 결과를 얻는 또 다른 방법은 다음과 같습니다.

SELECT Persons.Name, Persons.SS, Fears.Fear
FROM Persons
LEFT JOIN Person_Fear ON Person_Fear.PersonID = Persons.PersonID
LEFT JOIN Fears ON Person_Fear.FearID = Fears.FearID
로그인 후 복사

이 쿼리는 두 개의 Left 조인을 사용하여 테이블을 연결하여 비슷한 결과를 생성합니다.

위 내용은 세 개의 테이블을 사용하여 MySQL LEFT JOIN을 효율적으로 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿