>데이터 베이스 >MySQL 튜토리얼 >날짜 필터를 사용할 때 LEFT OUTER JOIN이 예상 결과를 반환하지 못하는 이유는 무엇입니까?

날짜 필터를 사용할 때 LEFT OUTER JOIN이 예상 결과를 반환하지 못하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-17 14:13:09934검색

Why Does My LEFT OUTER JOIN Fail to Return Expected Results When Using Date Filters?

LEFT OUTER JOIN 쿼리 결과 불일치 문제 해결

SQL에서 LEFT OUTER JOIN 연산은 오른쪽 테이블에 해당 데이터가 없더라도 왼쪽 테이블의 데이터를 유지하도록 설계되었습니다. 그러나 LEFT OUTER JOIN이 예상한 결과를 생성하지 않으면 혼란스러울 수 있습니다.

LEFT OUTER JOIN을 사용하여 세 테이블에서 데이터를 검색해야 한다고 가정해 보겠습니다. Prescriber 및 Prescriptions 테이블에 일치하는 레코드가 없더라도 Salesrep 테이블에서 정보를 얻으려고 합니다. WHERE 절에 날짜 매개변수를 사용하여 이 쿼리를 실행하면 예상치 못한 결과가 발생합니다. 데이터와 연결되지 않은 영업 담당자에 대해서는 행이 반환되지 않습니다.

이 문제를 해결하려면 Prescriptions.filldate의 제약 조건을 WHERE 절에서 JOIN의 ON 조건으로 이동하는 것이 핵심입니다. 수정된 쿼리는 다음과 유사해야 합니다.

<code class="language-sql">LEFT OUTER JOIN prescriptions ON prescriber.dea_no = prescriptions.dea_no AND
                             prescriptions.filldate >= '09-01-12'
                             AND prescriptions.filldate < '10-01-12'</code>

처음에는 날짜 매개변수가 WHERE 절에 있을 때 Prescriptions.filldate에 NULL 값이 있는 레코드가 잘못 필터링되었습니다. ON 조건에 포함시키면 관련 처방 내역이 없더라도 영업사원은 결과 집합에 계속 포함되며, NULL 값이 적절하게 표시됩니다.

이제 쿼리를 실행하면 Prescriber 및 Prescriptions 테이블의 해당 데이터에 관계없이 Salesrep 테이블 정보를 성공적으로 얻을 수 있습니다.

위 내용은 날짜 필터를 사용할 때 LEFT OUTER JOIN이 예상 결과를 반환하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.