我有一个关键字和一个带有ID和名称col的类别表(我无法将它们合并到一个表中!)

有一个带有ID,名称,文本的商品表。

以及多对多连接表:


关键字,列的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 AND ID 7以及类别ID 12 AND ID 18的那些文章怎么办?我想不出正确的查询。

最佳答案

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

关于mysql - 获取属于指定关键字和类别的项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12329918/

10-10 06:38