繁体   English   中英

具有多个SELECT语句的SQL

[英]SQL with multiple SELECT statement

嗨,我的SQL有点问题。 我的问题是,当我过滤数据的日期时,我的SQL语句仅返回2条记录,即用户的employee_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."'

这是我需要过滤器的修改后的语句:(正常工作)

 SELECT * FROM `report` WHERE 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."'

但是,当我添加以下内容时:在语句中DATE( Timestamp ) = DATE_ADD(CURDATE(), INTERVAL 24 HOUR)可以过滤显示的唯一记录的日期: 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."'

我希望按今天的日期,星期,月份和过去3个月筛选修改后的SQL语句。 我已经必须为这些过滤器编写代码,但是我无法弄清楚如何将这些过滤器添加到我的语句中。

在组条件中添加括号:

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."'
      )

AND优先于OR ,因此三个Employee_ID条件中的第一个条件仅考虑您的日期条件。

编辑:重新阅读您的问题后,我不完全确定上面是否是您要查找的内容,您的日期条件将仅返回带有明天日期的记录,该时间可能不在“ Timestamp字段中,因此可能是真正的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM