たとえば、商品のプロパティを含むテーブルがあります。各製品は、同じプロパティの複数の値を持つことができます。
品
goods_id | property | value
1 |color | red
1 |size | 100
1 |size | 200
2 |color | red
2 |color | green
2 |size | 200
色が赤でサイズが100のすべてのアイテムを検索する必要がある場合は、次のクエリを実行します。
SELECT goods_id FROM goods
WHERE (property = 'color' AND value = 'red') OR
(property = 'size' AND value = '100')
GROUP BY goods_id
HAVING COUNT(goods_id) = 2
MYSQL は、goods_id = 1 を返します。
しかし、色が赤または緑でサイズが100のすべてのアイテムを検索する必要がある場合、次のクエリ
SELECT goods_id FROM goods
WHERE (property = 'color' AND value IN ('red', 'green')) OR
(property = 'size' AND value = '100')
GROUP BY goods_id
HAVING COUNT(goods_id) = 2
ID 1 と 2 を返しますが、1 だけにする必要があります。
正しい結果を返すように 2 番目のクエリを変更するにはどうすればよいですか? アドバイスをありがとう