0

我的 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

topic_keywords 具有以下条目:

t_k_id || topics_id || keyword_id
1 || 1 || 1 
2 || 1 || 2
3 || 2 || 1

所以也许你可以看到我想要做什么。

如果有人输入“棒球”,我想计算有多少主题共享相关关键字。在上面的示例中,baseballsports都是 的共享关键字topics_id: 1

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

4

1 回答 1

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' );

也就是说,您正在选择没有您要查找的关键字但具有您要查找的关键字的 topic_id 的 topic_keywords 计数。

于 2012-09-25T16:43:47.697 回答