私は2つのテーブルを持っています:
製品
id name
1 Product 1
2 Product 2
3 Product 3
製品サイズ
id size_id product_id
1 1 1
2 2 1
3 1 2
4 3 2
5 3 3
したがって、商品 1 には 2 つのサイズ (1、2) があります。商品 2 には 2 つのサイズ (1、3) があります。商品 3 には 1 つのサイズ (3) があります。
私がやりたいことは、サイズ 1 とサイズ 3 の両方を持つ製品 (つまり、製品 2) を引き戻すクエリを作成することです。サイズが 1 と 3の両方の商品を取得するクエリを簡単に作成できます。
select `products`.id, `products_sizes`.`size_id`
from `products` inner join `products_sizes` on `products`.`id` = `products_sizes`.`product_id`
where products_sizes.size_id IN (1, 3)
group by products.id
このクエリを実行すると、製品 1、製品 2、および製品 3 が返されます。
繰り返しますが、製品 2 のみを取得したいと思います。HAVING 句を使用して、$id IN GROUP_CONCAT(...) をいじってみましたが、何も機能させることができませんでした。よろしくお願いします。