Tôi đang tìm cách tạo một truy vấn để thực hiện các thao tác sau:
Hãy xem xét 3 bảng:
- sản phẩm: Danh mục sản phẩm
- tags: danh sách các thẻ
- tag_IES: bảng được sử dụng để liên kết thẻ với sản phẩm
Hãy xem xét cấu trúc này cho mỗi bảng:
Các sản phẩm:
- id (int, tự động tăng)
- tên (varchar, tên của sản phẩm)
Tags:
- id (int autorement)
- nhãn (varchar, nhãn của thẻ)
Tag_ies:
- id (int, tự động tăng)
- tag_id (int, tham chiếu đến id thẻ)
- ref_id (int, tham chiếu đến id sản phẩm)
Những gì tôi muốn:
Lấy tất cả các sản phẩm được gắn thẻ id 10, 11 và 12 chẳng hạn.
Truy vấn này không hoạt động, vì nó trả về các sản phẩm có ít nhất một trong các thẻ:
select
p.name as name,
p.id as id
from
products p inner join tag_ties ties
on
p.id=ties.ref_id
where
ties.ref_id=p.id and
ties.tag_id in (10,11,12)
group by
p.id
order by
p.name asc