Ranking anhand von Abstimmungsergebnissen

da_freak

Well-known member
ID: 233028
L
22 Juni 2006
736
56
Hallo,

ich bin soweit, dass ich meinen Usern ermögliche, dass die für einen Beitrag o.Ä. eine Bewertung in Form von 1-5 Punkten abzugeben. Das speicher ich ein einer solchen Tabelle:
id |type | typeID | IP | date |val
1 | content | 1 | ... | ... | 4
2 | content | 4 | ... | ... | 3
3 | content | 2 | ... | ... | 1
4 | content | 5 | ... | ... | 2
5 | content | 1 | ... | ... | 5
6 | content | 3 | ... | ... | 3
7 | content | 3 | ... | ... | 2
8 | content | 5 | ... | ... | 5
9 | content | 1| ... | ... | 1

Ich denke mal IP und date sind hier zu vernachlässigen.

Was ich jetzt will, ist die id (bei gegebenem type) herausbekommen, die die höchste Durchschnittsbewertung hat. Und weils das ganze so schön ist, auch noch eine Art Top-X Ranking. Ich habe aber keine Ahnung wie ich ansetzen kann. Es würde mich freuen, wenn mir jemand einmal ein paar Stichworte an den Kopf werfen kann, damit ich es für's erste mal für mich versuchen kann.
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
Jo, ID hat keine Durchschnittswertung; da isn irgendwo n Tippfehler.
Entweder ID mit höchster Wertung oder TypeID mit höchstem Durchschnitt.

Zum Thema Top-Liste: Das Zauberwort is da "Auto-JOIN".
Wie viele Datensätze haben eine Wertung größer-gleich des Top1-Datensatzes? Richtig, nur 1, nämlich der Top1-Datensatz selber.
Wie viele Datensätze haben eine Wertung größer-gleich des Top2-Datensatzes? Richtig, nur 2, nämlich der Top1-Datensatz und der Top2-Datensatz selber.
u.s.w.

Du erhältst das Ranking also im COUNT(*).
 
Möchtest du das wirklich oder meinst du die typeID?

Genau, die typeID natürlich :) Die id an sich ist ja nicht sonderlich aussagekräftig.


Hab das dann auch mal gleich umgesetzt. Wenn man weiß was man benutzen muss, eigentlich ganz leicht. Tausend Dank ihr beiden!

edit: das was ich ursprünglich hier gepostet habe, funktionierte nur auf xampp. Musste die query leicht abändern:

SELECT typeid, AVG(val) AS avg, COUNT(ratings.id) AS count
FROM ratings
GROUP BY typeid
ORDER BY val DESC, id DESC
LIMIT 0,1
 
Zuletzt bearbeitet: