我用我的mySQL知识打了一堵墙。
这里更清楚地解释一下我的表格(一个非常标准的标签设置):
keywords
---
keyword_id (ai)
keyword
-
topics_keywords
---
t_k_id (ai)
topics_id
keyword_id
-
topics
---
topics_id
etc
现在,假设keywords
表包含以下条目:
keyword_id || keyword
1 || baseball
2 || sports
主题_关键字包含以下条目:
t_k_id || topics_id || keyword_id
1 || 1 || 1
2 || 1 || 2
3 || 2 || 1
所以也许你可以看到我想做什么。
如果有人输入'棒球',我想获得共享相关关键字的主题数量的COUNT。在上面的示例中,baseball
和sports
都是topics_id: 1
的共享关键字。
因此,如果有人输入baseball
,我将如何获得显示其他1个主题的count(),名为sports
,与baseball
共享主题?
答案 0 :(得分:2)
如果我理解正确你可能会想要运行这样的事情:
SQL小提琴:http://sqlfiddle.com/#!2/9e6be/6
SELECT COUNT(*)
FROM keywords
JOIN topics_keywords
USING (keyword_id)
WHERE keyword != 'value'
AND topics_id IN (
SELECT topics_id
FROM keywords
JOIN topics_keywords
USING (keyword_id)
WHERE keyword = 'value' );
也就是说,您正在选择没有您要查找的关键字的topics_keywords计数,但确实拥有您正在寻找的关键字的topics_id。