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 중국어 웹사이트의 기타 관련 기사를 참조하세요!