Hallo zusammen,
auf meiner Webseite kann man seine persönliche Film-Top-10 anlegen. Die einzelnen Datensätze werden folgendermaßen in der Datenbank gespeichert:
ID
USER_ID
MOVIE_ID
POSITION
POINTS
Jeder Nutzer kann nun seine Top anlegen, wobei jeder Platz einen Datensatz bekommt. Die jeweilige Nummer 1 des Nutzers erhält eine 1 bei POSITION und eine 10 bei POINTS, die Nummer 2 eine 2 bei POSITION und eine 9 bei POINTS und immer so weiter.
Nun hat quasi jeder Film mit einer MOVIE_ID eine gewisse Summe an POINTS. Je nachdem, wieviele Leute diesen Film recht weit oben in ihrer Top 10 angegeben haben.
Daraus möchte ich nun eine Top-50 aller Filme erstellen lassen.
Ich will quasi die MOVIE_IDs nacheinander ausgeben, sortiert nach der Summe der POINTS und für jeden Film immer nur 1x.
Nun kann es jedoch vorkommen, dass mehrere Filme die gleiche Anzahl an Gesamtpunkten haben. Diese möchte ich jedoch auf der gleichen Position anzeigen. Ein LIMIT von 50 kann daher eigentlich nicht vergeben werden. Und da wird´s für mich persönlich etwas zu kompliziert.
Das Ergebnis soll so aussehen:
PLATZ FILM
1 Film A
2 Film B
Film C
3 Film D
4 Film E
5 Film F
Film G
Film H
6 Film I
7 Film J
. .
. .
. .
50 Film XY
Soweit erstmal für den Anfang. Leider hab ich keinen wirklichen Ansatz für das SQL-Statement. Ich würde am liebsten alles in einem Statement abhandeln. Notfalls dürfen es aber auch mehrere sein, wenn´s nicht anders geht.
Punkt 2 wäre dann noch, die Position eines Filmes innerhalb der Tabelle zu ermitteln, wenn man nur die MOVIE_ID hat. Also Quasi "Dieser Film ist auf Platz 3 der Top-50"... Aber dazu vielleicht erst, wenn der erste Teil funktioniert.
Bin für jeden Tipp/Ansatz dankbar.
Gruß,
Andreas