No es necesario hacer múltiples uniones. Si necesita hacer coincidir todas las etiquetas, puede usar un IN
cláusula con una subconsulta como esta:
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
)
Tenga en cuenta que deberá ajustar el número 2 para que sea el número de etiquetas únicas con las que está haciendo coincidir. Tenga cuidado en caso de que se trate de datos ingresados por el usuario y este ingrese la misma etiqueta dos veces.