2011-07-22 3 views
3

Hy les gars!Mysql, des sujets similaires

J'ai 3 tables:

topics 
(id*, title, body) 

tags 
(id*,name) 

topic_tags 
(topic_id,tag_id) 

Chaque sujet a quelques tags. Je veux trouver les sujets les plus liés à un autre, en me basant uniquement sur les tags (et non sur le titre et le corps des sujets).

Si plus de tags courants 2 sujets ont, ils sont plus liés. Je veux classer les résultats d'une manière ou d'une autre par similarité (= nombre de tags communs).

Que suggérez-vous?

Répondre

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

Cela fonctionne très bien. Je vous remercie! –

Questions connexes