【问题标题】:SQL query to display records in various scenariosSQL查询显示各种场景下的记录
【发布时间】:2017-09-22 03:40:39
【问题描述】:

我有一个显示表格中数据的表单。该表单有一个字段用于帐户 ID 以及开始日期和结束日期。我想要显示多个场景,并在下面进行了解释。

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

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

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

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

我能够弄清楚场景 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 子句中加上括号,但这也无济于事。

【问题讨论】:

    标签: sql


    【解决方案1】:

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

        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
    

    【讨论】:

    • 这会处理场景 2 和 3。1 和 4 现在不起作用
    • 显示未选择 '$endDate'、'$startDate' 和 '$call_id' 时的值
    • 它是一个 html 表格,因此当仅选择帐户 ID 或未选择任何字段时,表格不会填充
    • 请在每种情况下打印 SQL 查询,或者至少显示您的代码。
    • SELECT * FROM tbl_call_log_detail WHERE (dealer_id = '' AND '1970-01-01'='' AND '1970-01-01' ='') OR (time_stamp = '1970-01-01' AND (dealer_id = '' OR''='' )) OR ('1970-01-01'='' AND '1970-01-01' =' ' AND ''='') 按 id ASC 排序。当没有选择任何内容时,这是正在打印的查询
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多