Comment répertorier les articles de blog associés classés par nombre d'étiquettes communes?

StackOverflow https://stackoverflow.com/questions/818551

  •  03-07-2019
  •  | 
  •  

Question

Je souhaite afficher une liste d'articles de blog associés et je souhaite que la liste soit triée en fonction du nombre de balises courantes associées à l'article en cours. Chaque publication peut avoir plusieurs tags associés. Voici la structure de ma table:

[Posts] < - [posts-to-tags-join-table] - > [Tags]

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

Était-ce utile?

La solution

Qu'en est-il de ...:

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 que pid est la clé primaire dans la table des publications, tid en tant que clé primaire dans la table des balises, les deux clés étrangères de la table p2t (publication sur balise)?

Autres conseils

Bien sûr, vous pouvez le faire en une seule 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; 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top