解決LEFT OUTER JOIN查詢結果不符的問題
在SQL中,LEFT OUTER JOIN操作旨在即使右表中不存在對應數據,也能保留左表中的數據。然而,當LEFT OUTER JOIN沒有產生預期結果時,可能會令人困惑。
假設您需要使用LEFT OUTER JOIN從三個表中檢索資料。您希望獲取Salesrep表中的信息,即使Prescriber和Prescriptions表中不存在匹配記錄。當在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值。
現在,執行查詢時,您將成功獲得Salesrep表信息,而不管Prescriber和Prescriptions表中的對應資料如何。
以上是為什麼使用日期過濾器時我的 LEFT OUTER JOIN 無法回傳預期結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!