当我运行以下查询时,它只显示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