2009-05-04 8 views
1

Je souhaite afficher la liste des articles de blog associés et je souhaite que la liste soit triée en fonction du nombre de tags courants associés à la publication en cours. Chaque publication peut avoir plusieurs tags associés. Voici ma structure de table:Comment puis-je lister les articles de blog associés classés par nombre de tags courants?

[Messages] < - [messages à balises se joindre à la table] -> [tags]

J'utilise PHP et MySQL - je peux le faire en une requête?

Répondre

0

Qu'en est-il ...:

SELECT COUNT(*) AS numcommon, posts.pid, posts.post FROM posts 
       INNER JOIN p2t ON p2t.pid = posts.pid 
       WHERE p2t.tid IN 
       (SELECT p2t.tid FROM p2t 
       INNER JOIN posts ON p2t.pid = posts.pid 
       WHERE posts.pid = 1) 
       AND posts.pid != 1 
       GROUP BY posts.pid 
       ORDER BY numcommon 

en supposant pid comme la clé primaire dans le tableau des messages, tid comme la clé primaire la table des tags, les deux clés étrangères dans la table p2t (post to tag)?

5

Bien sûr, vous pouvez le faire dans une requête:

SELECT postid, count(tagid) as common_tag_count 
FROM posts_to_tags 
WHERE tagid IN (SELECT tagid FROM posts_to_tags WHERE postid = 2) 
GROUP BY postid ORDER BY common_tag_count DESC; 
Questions connexes