Mysql 带有多个SELECT语句的SQL

Mysql 带有多个SELECT语句的SQL,mysql,sql,select,Mysql,Sql,Select,嗨,我的SQL有点问题。我的问题是,当我过滤数据的日期时,我的SQL语句只返回2条记录,这是用户的雇员id 这是我在筛选日期时使用的工作代码的原始语句: SELECT * FROM `rmguidef_prs`.`payment_report` WHERE DATE(`Report_Timestamp`) = DATE_ADD(CURDATE(), INTERVAL 24 HOUR) AND Employee_ID IN ( SEL

嗨,我的SQL有点问题。我的问题是,当我过滤数据的日期时,我的SQL语句只返回2条记录,这是用户的雇员id

这是我在筛选日期时使用的工作代码的原始语句:

SELECT * FROM `rmguidef_prs`.`payment_report` WHERE DATE(`Report_Timestamp`) = DATE_ADD(CURDATE(), INTERVAL 24 HOUR)  AND Employee_ID IN (
                               SELECT T1.Employee_ID from `rmguidef_prs`.`employee` T1
                               WHERE T1.Supervisor_ID = '".$id."')
                               OR Employee_ID = '".$id."'
这是我需要过滤器的修改声明:(正常工作)

但当我在语句中添加以下内容:
DATE(
Timestamp
)=DATE\u add(CURDATE(),INTERVAL 24小时)
以过滤日期时,显示的唯一记录来自以下内容:
或Employee\u ID=“$ID.”


我希望修改后的SQL语句按今天的日期、周、月和过去的3个月进行过滤。我已经需要为这些筛选器编写代码,但我无法确定如何将它们添加到我的语句中。

将括号添加到组条件:

SELECT * 
FROM `report` 
WHERE DATE(`Timestamp`) = DATE_ADD(CURDATE(), INTERVAL 24 HOUR) 
  AND (   Employee_ID IN (SELECT T1.Employee_ID 
                          FROM `employee` T1
                          WHERE T1.Supervisor_ID = '".$id."'
                          )
       OR Employee_ID IN (SELECT T2.Manager_ID 
                          FROM `branches` T2
                          WHERE T2.Manager_ID = '".$id."'
                          )
       OR Employee_ID = '".$id."'
      )
优先于
,因此您的日期标准仅考虑三个
员工ID
标准中的第一个


编辑:在重新阅读您的问题后,我不完全确定上述内容是否是您所追求的,您的日期标准将只返回明天日期的记录,这可能不存在于
时间戳
字段中,因此这可能是真正的问题。

哦!这没关系,因为时间与提前1天的服务器时间一致。我看看这是否管用。
SELECT * FROM `report` WHERE DATE(`Timestamp`) = DATE_ADD(CURDATE(), INTERVAL 24 HOUR) AND Employee_ID IN (
                           SELECT T1.Employee_ID from `employee` T1
                           WHERE T1.Supervisor_ID = '".$id."')
                           OR Employee_ID IN (
                           SELECT T2.Manager_ID from `branches` T2
                           WHERE T2.Manager_ID = '".$id."')
                           OR Employee_ID = '".$id."'
SELECT * 
FROM `report` 
WHERE DATE(`Timestamp`) = DATE_ADD(CURDATE(), INTERVAL 24 HOUR) 
  AND (   Employee_ID IN (SELECT T1.Employee_ID 
                          FROM `employee` T1
                          WHERE T1.Supervisor_ID = '".$id."'
                          )
       OR Employee_ID IN (SELECT T2.Manager_ID 
                          FROM `branches` T2
                          WHERE T2.Manager_ID = '".$id."'
                          )
       OR Employee_ID = '".$id."'
      )