2016-11-07 12 views
1

私は3つのチェックボックスを持っています。複数のチェックボックスの選択に基づいて検索し、結果としてユニオンを提供します

  • Checkbox1Checkbox2Checkbox3が選択されているときにA = 0ですべてのレコードをフェッチB = 1
  • ですべてのレコードをフェッチし、次いで選択された場合にA = 1
  • ですべてのレコードをフェッチし、選択され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

のためのUNIONを使用してみてくださいすべてのチェックボックスが '0'である場合には? – sagi

+0

@サギ。 。 。私はそれが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

は各条件

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)) 
関連する問題