왼쪽 테이블의 왼쪽 외부 조인 및 불완전한 데이터
조인 조건이 왼쪽 외부 조인 결과에 어떤 영향을 미치는지 이해하는 것이 중요합니다. 조건을 잘못 배치하면 왼쪽 테이블의 데이터가 불완전해질 수 있습니다.
이 쿼리를 살펴보겠습니다.
<code class="language-sql">SELECT day.days, COUNT(*) AS opens FROM day LEFT OUTER JOIN tracking ON day.days = DAY(FROM_UNIXTIME(open_date)) WHERE tracking.open_id = 10 GROUP BY day.days;</code>
이 쿼리는 일일 페이지 열기 수를 계산하려고 합니다. 그러나 day
테이블에 더 많은 항목이 있더라도 며칠만 표시될 수 있습니다. 문제는 WHERE
절에 있습니다.
조인 조건ON day.days = DAY(FROM_UNIXTIME(open_date))
이 날짜와 정확하게 일치합니다. 그러나 WHERE tracking.open_id = 10
은 조인 이후를 필터링하여 open_id = 10
테이블에서 tracking
이 없는 모든 날짜를 제거합니다.
의 일치 여부에 관계없이 왼쪽 표()의 day
모든tracking
일을 포함하려면 open_id
조건을 ON
절로 이동하세요.
<code class="language-sql">SELECT day.days, COUNT(*) AS opens FROM day LEFT OUTER JOIN tracking ON day.days = DAY(FROM_UNIXTIME(open_date)) AND tracking.open_id = 10 GROUP BY day.days;</code>
이 수정된 쿼리는 tracking
이 있는 open_id = 10
테이블에 항목이 없는 날이 있더라도 모든 날짜가 포함되도록 보장하여 완전한 일일 페이지 열기 횟수를 제공합니다. COUNT(*)
은 해당 날짜에 대해 0을 반환합니다.
위 내용은 내 왼쪽 외부 조인이 왼쪽 테이블의 일부 데이터만 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!