2011-07-22 23 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

它很好用。謝謝! –