Het is niet nodig om meerdere joins te doen. Als u alle tags wilt matchen, kunt u een IN
. gebruiken clausule met een subquery als deze:
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
)
Houd er rekening mee dat u het getal 2 moet aanpassen om het aantal unieke tags te zijn waarop u overeenkomt. Pas op als dit door de gebruiker ingevoerde gegevens zijn en ze dezelfde tag twee keer invoeren.