ホームページ >データベース >mysql チュートリアル >日付でフィルターすると、左外部結合ですべての営業担当者が返されないのはなぜですか?
SQL 左外部結合の日付フィルタリングの問題を解決します
SQL クエリで、左外部結合は予期した結果を返しませんでした。具体的には、WHERE 句に日付パラメータを含めると、右側のテーブルに一致するデータがない営業担当者は表示されません。
この問題を解決するには、prescriptions
テーブルの日付制約を ON
句内に保持するのではなく、結合の WHERE
条件に移動する必要があります。
<code class="language-sql">SELECT salesrep.salesrepid as SalesRepID, salesrep.fname as SalesrepFName, salesrep.lname as SalesRepLName, salesrep.fname+' '+salesrep.lname as SalesRepFullName, prescriber.dea_no as PDeaNo, prescriber.lname+', '+prescriber.fname as DocName, CONVERT(VARCHAR(8), prescriptions.filldate, 1) as FillDate, prescriptions.drugname as DrugName, prescriptions.daysupply as Supply, prescriptions.qtydisp as QtyDisp, prescriptions.rx_no as Refill, prescriptions.copay as Sample, ROUND(prescriptions.AgreedToPay-(prescriptions.AgreedToPay*.07),2) as AgreedToPay, prescriptions.carrierid as CarrierID FROM salesrep LEFT OUTER JOIN prescriber on salesrep.salesrepid = prescriber.salesrepid LEFT OUTER JOIN prescriptions ON prescriber.dea_no = prescriptions.dea_no AND prescriptions.filldate >= '09-01-12' AND prescriptions.filldate <= '09-17-12' ORDER BY prescriptions.filldate</code>
制約を ON
条件に移動することで、prescriptions
テーブルに一致するレコードが存在するかどうかに関係なく、左外部結合がすべての営業担当者に対して結果を正しく返すようにすることができます。
以上が日付でフィルターすると、左外部結合ですべての営業担当者が返されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。