1

キーワードと、 ID名前の col を持つカテゴリテーブルがあります(それらを単一のテーブルにマージすることはできません!)

ID、名前、テキストを含む article テーブルがあります。

そして、多対多接続テーブル:

  • キーワードのckw、列: key_id、article_id

  • カテゴリ、列のccat : cat_id、article_id

キーワード ID 5とID 7に属する記事を取得するクエリを作成できます。

SELECT articles.name FROM articles
JOIN ckw ON (ckw.article_id = articles.id)
WHERE ckw.key_id IN (5, 7)
GROUP BY ckw.article_id
HAVING COUNT(ckw.key_id) = 2

しかし、キーワード ID 5とID 7 に属し、カテゴリ ID 12 と ID 18 にも属する記事を取得したい場合はどうすればよいでしょうか? 正しいクエリがわかりません。

4

1 に答える 1

0
SELECT articles.name
FROM articles
inner JOIN ckw ON ckw.article_id = articles.id
inner join ccat on ccat.article_id = articles.id
WHERE ckw.key_id IN (5, 7) 
and ccat.category_id in (12,18)
GROUP BY articles.article_id , articles.name 
HAVING COUNT(distinct ckw.key_id) = 2 
and count(distinct ccat.category_id) = 2 
于 2012-09-08T10:42:09.567 に答える