基于多个复选框选择进行搜索,并提供结合作为结果

时间:2016-11-07 12:41:49

标签: sql

我有3个复选框。

  • 选择Checkbox1后,获取A = 1的所有记录。
  • 选择Checkbox2后,获取B = 1的所有记录。
  • 选择Checkbox3后,获取A = 0且B = 0的所有记录。
  • 当选择多个复选框时,我需要结果的并集。
  • 如果未选中任何复选框,则应提取所有记录。

例如:如果同时选择Checkbox1Checkbox3,则获取A = 1的所有记录以及A = 0和B = 0的记录。

我正在做这样的事情:

SELECT FROM CarData
WHERE (@IsCheckbox1=0 OR (@IsCheckbox1=1 AND A=1))
AND   (@IsCheckbox2=0 OR (@IsCheckbox2=1 AND B=1))                      
AND   (@IsCheckbox3=0 OR (@IsCheckbox3=1 AND A=0 AND B=0))

但是,它无法正常工作。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:0)

" union"所有结果表明您希望条件之间OR。所以情况如下:

SELECT FROM CarData
WHERE ( (@IsCheckbox1 = 1 AND A = 1) OR
        (@IsCheckbox2 = 1 AND B = 1) OR
        (@IsCheckbox3 = 1 AND A = 0 AND B = 0)
      )

答案 1 :(得分:0)

SELECT * FROM CarData WHERE A = CASE WHEN @IsCheckbox1 = 1 THEN 1 ELSE 0 END OR B = CASE WHEN @IsCheckbox2 = 1 THEN 1 ELSE 0 END  

答案 2 :(得分:0)

尝试为每个条件使用UNION

SELECT * FROM CarData WHERE (@IsCheckbox1=0 OR (@IsCheckbox1=1 AND A=1))
UNION
SELECT * FROM CarData WHERE (@IsCheckbox2=0 OR (@IsCheckbox2=1 AND B=1))
UNION                    
SELECT * FROM CarData WHERE (@IsCheckbox3=0 OR (@IsCheckbox3=1 AND A=0 AND B=0))