Es ist nicht erforderlich, mehrere Joins durchzuführen. Wenn Sie alle Tags abgleichen müssen, können Sie einen IN
verwenden -Klausel mit einer Unterabfrage wie dieser:
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
)
Beachten Sie, dass Sie die Zahl 2 anpassen müssen, um die Anzahl der eindeutigen Tags zu sein, mit denen Sie übereinstimmen. Passen Sie auf, falls es sich um vom Benutzer eingegebene Daten handelt und sie dasselbe Tag zweimal eingeben.