Няма нужда да правите множество присъединявания. Ако трябва да съпоставите всички тагове, можете да използвате 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, за да бъде броят на уникалните тагове, с които съвпадате. Внимавайте в случай, че това са въведени от потребителя данни и те въвеждат един и същ етикет два пъти.