Vous pouvez utiliser cette solution. Cela obtient tous les produits qui contiennent ALL mots-clés 1, 23 et 54 :
SELECT a.*
FROM products a
INNER JOIN product_tags b ON a.product_id = b.product_id
WHERE b.tag_id IN (1,23,54)
GROUP BY a.product_id
HAVING COUNT(1) = 3
Où 3
est le nombre d'articles dans votre WHERE IN
liste, afin que vous puissiez ajuster en conséquence en fonction du nombre de balises que vous souhaitez vérifier.