複数の結合を行う必要はありません。すべてのタグを一致させる必要がある場合は、IN
を使用できます 次のようなサブクエリを含む句:
select p.sku, p.name, p.path
from shop_products p
where p.sku in (
select pc.product_sku
from shop_products_categories pc
inner join shop_categories c on pc.category_id = c.id
where c.path in ('flowers', 'romance')
group by pc.product_sku
having count(distinct c.path) = 2
)
一致する一意のタグの数になるように2を調整する必要があることに注意してください。これがユーザーが入力したデータであり、同じタグを2回入力する場合は注意してください。