私は4つのテーブルを持っています
POST:
id
POST_TAG:
post_id
tag_id
value
TAG:
id
SEARCH:
tag_id
post_tag_value
すべてのタグと値がSEARCHテーブルの行として含まれている投稿をクエリする必要があります(タグの1つの等しい値だけではありません)。
編集:現在のクエリと十分な情報を提供していないことをお詫び申し上げます。
SELECT POST.id FROM POST,POST_TAG, SEARCH
WHERE
POST.id = POST_TAG.post_id AND
POST_TAG.tag_id= SEARCH.tag_id AND
POST_TAG.value = SEARCH.value;
SEARCHテーブルに1行ある場合に機能します。問題は、それがもっとあるときです。結果は少なくなるはずですが、実際には多くなります(2行でテストした場合、適切な結果は重複した行です。私は和集合ではなく交差を探しています)
追加されたsqlfiddle:http ://sqlfiddle.com/#!2/9cfb9/1
クエリの結果は「1」、「1」、「2」です。「2」には1つしかないのに対し、両方の「タグ」があるため、「1」のみにする必要があります。