次の単純なテーブル構造を使用します。
Data
----------
id
Tag
----------
id
TaggedData
----------
id
tag_id
data_id
タグ ID のリストがある場合、リスト内のタグのすべての行が一致するデータの行と関係があり、そのサブセットではない場合、データのすべての行を取得するにはどうすればよいですか?
これが私が今持っている、うまくいかないクエリです:
SELECT
Data.*
FROM
Data
LEFT JOIN
TaggedData ON (Data.id = TaggedData.data_id)
LEFT JOIN
Tag ON (Tag.id = TaggedData.tag_id)
WHERE
Tag.id IN ('1' , '2')
具体的には、タグ 1 または 2 に関連するデータの行を返すため、これは機能しません。1と2 ではありません。