首頁 >資料庫 >mysql教程 >為什麼使用日期過濾器時我的 LEFT OUTER JOIN 無法回傳預期結果?

為什麼使用日期過濾器時我的 LEFT OUTER JOIN 無法回傳預期結果?

Patricia Arquette
Patricia Arquette原創
2025-01-17 14:13:09895瀏覽

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從三個表中檢索資料。您希望獲取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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn