product
id | product_name |
---|---|
1 | ダイヤのピアス |
2 | ルビーのピアス |
product_category
id | product_id | category_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 2 |
3 | 1 | 3 |
category
id | name |
---|---|
1 | ピアス |
2 | ダイヤ |
3 | 白系 |
ECサイトで上記のようなテーブルがあります。
検索機能を実装中です。
条件指定で、カテゴリが”ダイヤかつピアス”のもので絞り込みをしたいです。
この時に下記のSQLでJOINします。
SQL
1SELECT * 2FROM product 3LEFT JOIN product_category ON product.id = product_category.product_id 4LEFT JOIN category ON product_category.category_id = category.id
この時カテゴリが”ダイヤかつピアス”の条件で絞り込むためのSQL分を教えてほしいです。
以下試したものですが、うまくいきません。
結合した結果の行がカテゴリごとに別の行になるのが原因かと思っています。
SQL
1SELECT * 2FROM product 3LEFT JOIN product_category ON product.id = product_category.product_id 4LEFT JOIN category ON product_category.category_id = category.id 5WHERE product_category.category_id IN (1) AND product_category.category_id IN (2)