エントリのテーブルと、2 つをリンクする結合テーブルを持つカテゴリのテーブルがあります。特定のカテゴリのセットに一致するすべてのエントリを選択する必要があります。
例えば。カテゴリ A とカテゴリ B を持つすべてのエントリ
エントリ
entry_id | title
------------------
1 | Entry 1
2 | Entry 2
3 | Entry 3
カテゴリー
category_id | name
------------------
1 | A
2 | B
3 | C
entry_categories
entry_id | category_id
-----------------------
1 | 1
1 | 2
2 | 1
2 | 2
2 | 3
3 | 1
3 | 3
これを行うと、それぞれが少なくとも 1 つのカテゴリに一致するため、3 つのエントリすべてが取得されますが、本当に必要なのはエントリ 1 とエントリ 2 であり、エントリ 3 ではありません。
SELECT *
FROM entry_categories AS ec
INNER JOIN entries AS e ON ec.entry_id = e.entry_id
WHERE ec.category_id IN(1, 2)
GROUP BY e.entry_id