Domanda

Sto cercando di scrivere una funzione SQL per fare un algoritmo di popolarità.

Vorrei ordinare "post" per la quantità di commenti a "commenti" con la "post_id" del post, ha aggiunto alla quantità di voti nel "utili" tabella con la "post_id" del post , tutti ordinati per "data" nella tabella "messaggi" (un timestamp).

Non sono sicuro di come fare per fare questo multi-tavolo di ordinamento, quindi sto raggiungendo fuori per una guida!

Grazie in anticipo, Will.

È stato utile?

Soluzione

non ho ancora testato, ma potrebbe funzionare:

SELECT `post_id`, COUNT(`post_id`) AS `count` FROM `comments` GROUP BY `post_id`

E inoltre si può aderire con la tabella di messaggi:

SELECT * FROM `posts` LEFT JOIN (SELECT `post_id`, COUNT(`post_id`) AS `count` FROM `comments` GROUP BY `post_id`) AS `p` ON(`post_id`)

Altri suggerimenti

Ho deciso di andare solo in base al conteggio "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

perché è un esempio di close-sufficiente. Di quello che stavo cercando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top