繁体   English   中英

SQL灵活查询结果

[英]SQL flexible query results

我对SQL方面还很陌生。 我一直在尝试向您介绍条件,但是让它确定查询是否等于1个结果或多个结果。 我所拥有的如下。

我可能做错了所有,但以为我会问。

 SELECT employee_name
      , transaction_id
      , department
      , transaction_date
      , transaction_day
   FROM employee_transactions
  WHERE transaction_date 
BETWEEN '2018-08-20 07:14:35.000' 
    AND '2019-02-05 08:29:56.000'
    AND CASE WHEN '$variable' = 'All' 
             THEN inc_day IN (
                 SELECT DISTINCT transaction_day 
                   FROM employee_transactions
           ) ELSE inc_day in ('$variable')
             END

我的意思是在柱交易日中,有星期一,星期二,星期三等条目,但是都不在那里。 因此,在表单上,​​如果他们选择了全天的所有数据,而不只是一整天,但是如果他们选择了周一的数据,则只显示monda

您应该像下面这样编写查询。

SELECT employee_name, 
        transaction_id, 
        department, 
        transaction_date, 
        transaction_day

  FROM employee_transactions
  WHERE transaction_date 
  BETWEEN '2018-08-20 07:14:35.000' 
  AND '2019-02-05 08:29:56.000'
  AND ( '$variable' = 'All' OR inc_day = '$variable')

以上查询将在$ variable ='ALL'时返回所有记录,否则仅匹配记录。

假设在查询执行之前“ $ variable”将被替换。

你可以这样尝试

if($variable == "All")
{ 
   $query = "SELECT employee_name, transaction_id , department , transaction_date , 
   transaction_day
   WHERE transaction_date BETWEEN '2018-08-20 07:14:35.000' AND '2019-02-05 08:29:56.000'
   GROUP BY transaction_date"
}
else
{
   $query = "SELECT employee_name, transaction_id , department , transaction_date , transaction_day
   FROM employee_transactions
   WHERE transaction_date BETWEEN '2018-08-20 07:14:35.000'  AND '2019-02-05 08:29:56.000'
   AND inc_day in ($variable)"
}

暂无
暂无

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

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