SQL查询以在各种方案中显示记录

时间:2017-09-21 18:57:10

标签: sql

我有一个显示表格数据的表单。表单包含帐户ID和开始日期和结束日期的字段。我想要显示多个场景并在下面解释它们。

  1. 如果仅选择了帐户ID,则应显示与该帐户ID相关的所有行。

  2. 如果仅选择了开始日期和结束日期,则应显示该范围内的所有行。

  3. 如果选择了所有3个字段(帐户ID,开始日期和结束日期),则会在指定的日期范围内显示特定帐户ID。

  4. 如果未选择任何字段,则显示整个表格。

  5. 我能够找出情景1和2,但却无法获得3& 4上班。以下是我用过的查询:

    SELECT * FROM tbl_call_log_detail WHERE dealer_id = '$call_id' OR time_stamp <= '$endDate' AND time_stamp >= '$startDate' ORDER BY id ASC
    

    我甚至尝试将括号括在OR子句中,但这也没有做任何事情。

1 个答案:

答案 0 :(得分:0)

我假设如果没有选中,那么它的值是一个空字符串。

    SELECT * FROM tbl_call_log_detail 
    WHERE
     (dealer_id = '$call_id' AND '$endDate'='1970-01-01' AND '$startDate' ='1970-01-01')
  OR ( time_stamp <= '$endDate' AND time_stamp >= '$startDate'  
                    AND (dealer_id = '$call_id' OR'$call_id'='' ))    
  OR ('$endDate'='1970-01-01' AND '$startDate' ='1970-01-01'  AND '$call_id'='')
     ORDER BY id ASC