image、tag、image_tag_link の 3 つのテーブルがあります。
- 画像には画像データが含まれており、
image_id (pk)
- タグにはタグが含まれており、
tag_id (pk)
- i
mage_tag_link
と で 2 つを結合しimage_id
ますtag_id (fk)
。
特定のタグ ID のリストに関連するすべてのタグを取得したいと考えています。たとえば、特に 2 つのタグを共有する 3 つの画像がある場合、特定のフィルターに対してそれらの 2 つのタグ (すべて共通のもの) のみを取得したいと考えています。
私は現在使用しています(リンクテーブルを使用するだけに簡略化されています):
select itl1.tag_id
from image_tag_link itl1
inner join image_tag_link itl2 on itl2.image_id = itl1.image_id
where itl2.tag_id in (:list_of_tag_ids)
group by itl1.tag_id;
ただし、これにより、フィルター基準を満たすすべての画像のすべてのタグが得られます。
どんな助けでも大歓迎です。