1

エントリのテーブルと、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
4

1 に答える 1

5

HAVING COUNT(ec.Categor_id) = 2そのように追加します:

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
HAVING COUNT(ec.Category_id) = 2
于 2012-12-10T15:29:11.670 に答える