获取相关标签的COUNT()

时间:2012-09-25 16:30:11

标签: php mysql

我用我的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。在上面的示例中,baseballsports都是topics_id: 1的共享关键字。

因此,如果有人输入baseball,我将如何获得显示其他1个主题的count(),名为sports,与baseball共享主题?

1 个答案:

答案 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。

相关问题