복붙노트

[SQL] MySQL은 LEFT 3 개 테이블을 조인

SQL

MySQL은 LEFT 3 개 테이블을 조인

내가 3 개 테이블이 :

Persons (PersonID, Name, SS)
Fears (FearID, Fear)
Person_Fear (ID, PersonID, FearID)

지금은 두려움 (복수 두려움이 될 수뿐만 아니라 아무것도 할 수 없다) 그들에게 연결되어 무엇 이건 모든 사람을 나열하고 싶습니다. 위격 테이블은 사람이 그들에게 연결된 두려움이없는 경우에도 표시해야합니다.

내가 가입 나는 왼쪽을 할 필요가 있다고 생각하지만, 내 코드가 작동하지 않습니다

SELECT persons.name, 
       persons.ss, 
       fears.fear 
FROM   persons 
       LEFT JOIN fears 
              ON person_fear.personid = person_fear.fearid 

어떻게 내가 여기 잘못 한거야?

해결법

  1. ==============================

    1.당신은 Person_Fear.FearID에 Person_Fear.PersonID에 가입하려고하는 -이 정말 이해가되지 않습니다. 당신은 아마 뭔가를 원하는 :

    당신은 Person_Fear.FearID에 Person_Fear.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
    

    이 중간 테이블 Person_Fear을 통해 두려움에 사람을 결합한다. (가) 사람 사이에 가입하고 Person_Fear은 좌 가입하기 때문에, 모든 사람 기록을 얻을 것이다.

    또한 :

    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
    
  2. ==============================

    2.이 시도

    이 시도

        SELECT p.Name, p.SS, f.Fear 
        FROM Persons p 
        LEFT JOIN Person_Fear fp 
        ON p.PersonID = fp.PersonID
        LEFT JOIN Fear f
        ON f.FearID = fp.FearID
    
  3. ==============================

    3.이 확실히 일을보십시오.

    이 확실히 일을보십시오.

    SELECT p.PersonID AS person_id,
       p.Name, p.SS, 
       f.FearID AS fear_id,
       f.Fear 
       FROM person_fear AS pf 
          LEFT JOIN persons AS p ON pf.PersonID = p.PersonID 
          LEFT JOIN fears AS f ON pf.PersonID = f.FearID 
       WHERE f.FearID = pf.FearID AND p.PersonID = pf.PersonID
    
  4. ==============================

    4.

    Select 
        p.Name,
        p.SS,
        f.fear
    From
        Persons p
    left join
            Person_Fear pf
        inner join
            Fears f
        on
            pf.fearID = f.fearID
     on
        p.personID = pf.PersonID
    
  5. ==============================

    5.

    Select Persons.Name, Persons.SS, Fears.Fear
    From Persons
    LEFT JOIN Persons_Fear
    ON Persons.PersonID = Person_Fear.PersonID
    LEFT JOIN Fears
    ON Person_Fear.FearID = Fears.FearID;
    
  6. from https://stackoverflow.com/questions/16222097/mysql-left-join-3-tables by cc-by-sa and MIT license