首页 > 解决方案 > 根据我的查询,它不应该返回值。但它显示了一些值

问题描述

我想在我使用下面提到的查询来检索它的日期范围之间接收数据。但如果我输入一个未输入记录的日期,它会显示最近 3 天的记录。

这是我的查询

SELECT date
     , employee
  FROM daily_sale
 WHERE employee = '$emp' 
    OR  employee = 'both'  
   AND date BETWEEN '$from' and '$to' 
 ORDER 
    BY date DESC 

**

我想要的是搜索一名员工在给定日期工作了多少个日期。员工表值是“L”、“D”和“Both”。因此,如果我使用“L”搜索,我想接收该表格中具有“L”和“Both”值的日期

**

标签: mysql

解决方案


我认为您需要更正过滤条件,例如将您的OR子句分组在括号中,以便正确应用日期范围过滤器的其余部分

SELECT `date`,`employee` 
FROM `daily_sale` 
WHERE (`employee` = :emp OR  `employee` = 'both')
  AND date BETWEEN :from and :to 
ORDER BY `date` DESC 

也不要在查询中直接使用变量,而是使用准备好的语句


推荐阅读