2011-07-22 60 views
3

Hy guys!Mysql,类似主题

我有3个表:

topics 
(id*, title, body) 

tags 
(id*,name) 

topic_tags 
(topic_id,tag_id) 

每个主题有一些标签。我想根据标签(而不是基于标题和正文的主题)找到另一个“最相关”的主题。

如果更常见的标签有2个主题,它们更相关。我想通过相似性(=​​通用标签的数量)以某种方式排列结果。

你有什么建议?

回答

3
SELECT tr.* 
FROM topic t 
JOIN topic_tag tt 
ON  tt.topic_id = t.id 
JOIN topic_tag ttr 
ON  ttr.tag_id = tt.tag_id 
JOIN topic tr 
ON  tr.id = ttr.topic_id 
WHERE t.id = $topicid 
GROUP BY 
     tr.id 
ORDER BY 
     COUNT(*) DESC 
+0

它很好用。谢谢! –