私はテーブルを持っています:
item_id | property_id | value |
================================
1 | 100 | 1 |
1 | 101 | 1 |
1 | 102 | 0 |
2 | 100 | 1 |
2 | 101 | 1 |
2 | 102 | 1 |
2 | 120 | black |
3 | 100 | 1 |
3 | 101 | 0 |
3 | 102 | 1 |
4 | 121 | big |
...
複数のチェックボックスと選択メニュー (各チェックボックスと選択メニューには「property_id」のような名前が付いています) を持つフォームで「AND」検索を実行したいと考えています。
例:
- チェックボックス 100 と 101 をチェックすると、クエリの目的の結果は item_id = 1, 2 になります。
- チェックボックス 100、101 をチェックして、選択メニュー 120 から「黒」を選択すると、望ましい結果は item_id = 2 になります。
- チェックボックス 100、101 をチェックし、選択メニュー 120 から 'black' を選択し、選択メニュー 121 から 'big' を選択すると、望ましい結果は item_id = NULL になります。
チェックされたプロパティ (チェックボックスと選択メニュー) の数は異なる場合があります。
私は試した:
SELECT item_id
FROM yourtable
WHERE property_id IN (100, 101)
AND value = 1
GROUP BY item_id
HAVING COUNT(DISTINCT property_id) = 2
しかし、それはチェックボックスと値0または1専用です。選択メニューで実装するのに問題があります(例2.または3.)
私がやろうとしていることを説明してくれることを願っています。前もって感謝します!