2016-11-07 18 views
1

我有3個複選框。基於多個複選框選擇進行搜索並提供聯合作爲結果

  • Checkbox1被選擇,然後用A = 1
  • Checkbox2被選擇,然後用B = 1
  • Checkbox3被選擇,然後用甲獲取所有記錄= 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)) 

但是,它不能正常工作。任何幫助表示讚賞。

回答

0

所有結果的「聯合」表示您希望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) 
    ) 
+0

如果什麼都複選框是'0'? – sagi

+0

@sagi。 。 。我認爲這是OP的問題。 –

+0

@GordonLinoff:如果所有的複選框都是0,那麼應該抓取所有的記錄。 –

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 
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))