Không cần thực hiện nhiều phép nối. Nếu bạn cần đối sánh tất cả các thẻ, bạn có thể sử dụng IN
mệnh đề với một truy vấn con như sau:
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
)
Lưu ý rằng bạn sẽ cần điều chỉnh số 2 là số lượng thẻ duy nhất mà bạn đang đối sánh. Hãy cẩn thận trong trường hợp đây là dữ liệu do người dùng nhập và họ nhập cùng một thẻ hai lần.