2010-12-20 7 views
0

Ich versuche, eine SQL-Funktion für die Erstellung eines Popularitätsalgorithmus zu schreiben.Verschachtelung wählt, um Popularitätsalgorithmus zu machen

Ich möchte "Beiträge" nach der Anzahl der Kommentare in "Kommentare" mit der "post_id" des Beitrags sortieren, addiert zur Anzahl der Stimmen in der "votes" -Tabelle mit der "post_id" der Post, alles sortiert nach "Datum" in der "Posts" -Tabelle (ein Zeitstempel).

Ich bin mir nicht sicher, wie ich diese Sortierung mit mehreren Tabellen durchführen soll, also suche ich nach einer Anleitung!

Vielen Dank im Voraus, Will.

+0

touch click - hört sich kompliziert an, denken Sie auch daran, Ihr Tabellenschema einzuschließen? – ajreal

+0

Entschuldigung, was meinst du? – willium

Antwort

0

habe ich nicht getestet, aber es kann funktionieren:

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

Und zusätzlich können Sie es mit dem Pfosten Tisch kommen:

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

hm. Scheint nicht die richtige Wirkung zu haben. Ich möchte Posts sortieren, durch die Kommentare + die Stimmen für diesen Post. – willium

+0

es als richtig markieren, weil Sie mich in die richtige Richtung führen. – willium

0

ich auf der „Abstimmung“ nur Grundlage entschieden Anzahl.

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 

weil es ein nah genug Beispiel ist. Nach was ich gesucht habe.