ホームページ > データベース > mysql チュートリアル > LEFT OUTER JOIN が WHERE 句の日付フィルターで機能しないのはなぜですか?

LEFT OUTER JOIN が WHERE 句の日付フィルターで機能しないのはなぜですか?

Patricia Arquette
リリース: 2025-01-17 14:27:10
オリジナル
565 人が閲覧しました

Why Doesn't My LEFT OUTER JOIN Work with Date Filters in the WHERE Clause?

日付フィルタリングを使用した失敗した LEFT OUTER JOIN のデバッグ

一般的な SQL クエリの課題には、日付フィルターで LEFT OUTER JOIN を使用することが含まれます。 右側のテーブル (SalesrepPrescriber) に一致するデータがない場合でも、左側のテーブル (例: Prescriptions) のデータが返されることが期待されます。 ただし、WHERE 句に日付フィルターを追加すると、左側のテーブルからレコードが予期せず除外される可能性があります。

問題の理解:

問題は、日付範囲条件の場所から発生します。 これらを WHERE 句に配置すると、結合の結果が誤ってフィルタリングされ、指定された日付範囲内で一致するエントリが存在しない行が左側のテーブルから実質的に削除されます。

正しいアプローチ:

LEFT OUTER 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 <= '09-30-12'</code>
ログイン後にコピー

日付フィルターを ON 句に再配置することで、クエリは、指定された期間内の処方箋のない営業担当者を含む、Salesrep テーブルのすべてのデータを正確に返します。 これにより、LEFT OUTER JOIN.

から期待される動作が正しく実装されます。

以上がLEFT OUTER JOIN が WHERE 句の日付フィルターで機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート