當我運行以下查詢時,它只顯示1行。基於「created_date」條件,其中,如果我刪除「created_date」條件,只是保持「status_change_date」條件,它顯示3行。提供錯誤結果的SQL查詢
我想查看所有在指定時間內創建或修改的項目。我無法找到什麼錯在查詢周圍的日期條款
`SELECT DISTINCT products.id AS product, status.id AS stat, COUNT(*) AS total FROM items INNER JOIN products ON (items.fk_product_id = products.id) INNER JOIN status ON (items.fk_status = status.id) WHERE DATE(items.status_change_date) BETWEEN '2011-04-13' AND '2011-05-13' OR DATE(items.created_date) BETWEEN '2011-04-13' AND '2011-05-13' AND status.id = 2 GROUP BY products.name, status.name order by products.name`
當我拿走status.id = 2,看它再次1行顯示在整個結果status.id = 2的所有狀態設置 – Johal 2011-05-13 16:59:08
我刪除DISTINCT仍然是相同的 – Johal 2011-05-13 17:07:21
@Johal你是否嘗試在你的where子句中放置parens?您的查詢可能存在其他問題,但您正在執行x OR y AND z而不是(x或y)和z。如果change_date在日期範圍內,或者創建的日期在日期範圍內且狀態ID爲2,那麼您寫入的方式只會返回記錄。我認爲您想要返回更改日期或修改日期的記錄在日期範圍內並且狀態ID是2。 – rsbarro 2011-05-13 18:10:47