choisit imbrication pour appliquer l'algorithme de popularité
-
11-10-2019 - |
Question
Je suis en train d'écrire une fonction SQL pour faire un algorithme de popularité.
Je voudrais trier « messages » par le montant des commentaires dans « commentaires » avec le « post_id » du poste, ajouté au montant des votes dans la table « votes » avec le « post_id » du poste , dans la table "messages" (un horodatage) tous classés par "date".
Je ne suis pas sûr de savoir comment s'y prendre pour faire ce tri multi-table, donc je suis atteint pour quelques conseils!
Merci à l'avance,.
La solution
Je n'ai pas testé, mais il peut fonctionner:
SELECT `post_id`, COUNT(`post_id`) AS `count` FROM `comments` GROUP BY `post_id`
Et vous pouvez en outre joindre à la table des messages:
SELECT * FROM `posts` LEFT JOIN (SELECT `post_id`, COUNT(`post_id`) AS `count` FROM `comments` GROUP BY `post_id`) AS `p` ON(`post_id`)
Autres conseils
J'ai décidé d'aller juste en fonction du nombre « vote ».
SELECT posts.id, posts.date, COUNT(votes.id) AS votePerPost FROM posts,votes WHERE posts.id = votes.post_id GROUP BY posts.id ORDER BY posts.date DESC, votePerPost ASC
parce que c'est un exemple assez gros. De ce que je cherchais.