selecciona a anidación algoritmo de popularidad maquillaje
-
11-10-2019 - |
Pregunta
Estoy intentando escribir una función de SQL para realizar un algoritmo de popularidad.
Me gustaría ordenar "mensajes" por la cantidad de comentarios en "comentarios" con el "post_id" del post, añadido a la cantidad de votos en la tabla "útiles" con el "post_id" del puesto , todas clasificado por "fecha" en la tabla "mensajes" (una marca de tiempo).
No estoy seguro de cómo hacer para hacer este multi-mesa de selección, así que estoy llegando a una cierta dirección!
Gracias de antemano, Will.
Solución
No he probado, pero es posible que funcione:
SELECT `post_id`, COUNT(`post_id`) AS `count` FROM `comments` GROUP BY `post_id`
Y, además, puede unirse con la tabla de mensajes:
SELECT * FROM `posts` LEFT JOIN (SELECT `post_id`, COUNT(`post_id`) AS `count` FROM `comments` GROUP BY `post_id`) AS `p` ON(`post_id`)
Otros consejos
decidí ir simplemente en base al recuento "voto".
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
porque es un ejemplo de cerca lo suficiente. De lo que estaba buscando.