2011-07-22 13 views
3

Hy男!Mysql、類似のトピック

topics 
(id*, title, body) 

tags 
(id*,name) 

topic_tags 
(topic_id,tag_id) 

すべてのトピックは、いくつかのタグを持っています

私は3つのテーブルを持っています。私はタグにだけ基づいて(トピックのタイトルと本文に基づいていない)、「最も関連性の高い」トピックを別のものに見たいと思っています。

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

素晴らしいです。ありがとうございました! –