我正在寻找一种创建查询以执行以下操作的方法:
让我们考虑3个表:
- 产品:产品清单
- 标签:标签列表
- tag_ties:用于将标签与产品关联的表
让我们为每个表考虑以下结构:
产品:
- id(int,自动递增)
- 名称(varchar,产品名称)
标签:
- id(int自动递增)
- 标签(varchar,标签的标签)
标签:
- id(int,自动递增)
- tag_id(整数,引用标记ID)
- ref_id(int,引用产品ID)
我想要的是:
获取所有带有标签ID 10、11和12的产品。
该查询不起作用,因为它返回具有至少一个标签的产品:
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