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;
ただし、これにより、フィルター基準を満たすすべての画像のすべてのタグが得られます。
どんな助けでも大歓迎です。