次のことを行うクエリを作成する方法を探しています。
3つのテーブルについて考えてみましょう。
- 製品:製品リスト
- タグ:タグのリスト
- tag_ties:タグを製品に関連付けるために使用されるテーブル
各テーブルについてこの構造を考えてみましょう:
製品:
- id(int、autoincrement)
- 名前(varchar、製品名)
タグ:
- id(int自動インクリメント)
- ラベル(varchar、タグのラベル)
Tag_ties:
- id(int、autoincrement)
- tag_id(int、タグIDへの参照)
- ref_id(int、製品IDへの参照)
私が欲しいもの:
たとえば、タグID 10、11、および12でタグ付けされたすべての製品を取得します。
このクエリは機能しません。少なくとも1つのタグを持つ製品が返されるためです。
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