• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

조인 조건 질문드립니다

21.05.02 18:16 작성 조회수 102

1

강사님 안녕하세요.

풀이에서 같은 users 테이블을 두번 inner join 하시지요. (영상 11분)

저는 다음과 같이 작성했어요. (서브쿼리 부분만 옮겨 적을게요)

FROM

    (SELECT Request_at, count(*) as total_count, SUM(CASE WHEN status = 'completed' THEN 0

            ELSE 1

            END) as cancel_count

    FROM trips AS t

    INNER JOIN users AS U

    ON t.client_id = u.users_id OR t.driver_id = u.users_id

    WHERE (t.request_at BETWEEN '2013-10-01' AND '2013-10-03') AND u.banned = 'No'

    GROUP BY request_at) sub

같이 JOIN은 한번만 하고 ON을 두번 적어줬는데 값이 다르게 나오더라고요.

user_id 중 client_id과 driver_id에 각각 매치되는 부분을 OR로 연결하면 될 것 같은데... 왜 안되는지 잘 모르겠습니다.

설명 부탁드릴게요!

답변 1

답변을 작성해보세요.

1

FROM 절에서 JOIN으로 만들어지는 테이블 자체가 달라지기 때문입니다.

적어주신대로 JOIN을 하면 Trips 테이블의 ID당 2개씩의 row가 만들어지게 됩니다.  

같은 컬럼(Users의 users_id)을 client_id와 붙인 것과, driver_id와 붙인 것, 이 둘을 모두 출력해줘야 하기 때문에요.

SELECT *로 확인해보시면 차이점을 아실 수 있을 거에요!