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,.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top