• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Denkanstoss: Highscorer-Liste

Jonas23

New member
Denkanstoss: Highscorer-Liste erstellen

Ich möchte gerne eine Highscorer-Liste erstellen mit jsp und ich brauche einen Denkanstoss wie ich das umsetzen kann.

Sachlage

Also ich habe in einer Datenbank folgende Werte

benutzerid, datum, wert1, wert2, wert3
1, 20100101, 5, 6, 4
1, 20100102, 6, 5, 9
1, 20100103, 10, 6, 3
2, 20100101, 8, 6, 8
2, 20100102, 6, 8, 9
2, 20100103, 0, 6, 3

also es sind dann etwa 20 Personen oder mehr, und die Zeitspanne ist dann auch grösser.

Die Summe von Wert1, 2, und 3 ergeben die Gesamtpunktzahl für die Rangliste.
Nun damit ich ja auf die Gesamtpunktzahl komme muss ich mit select by benutzerid die Summe der drei Werten holen und zusammenzählen. Nun das klappt ja, aber nun gibt es ja noch andere Teilnehmer und jetzt weiss ich nicht mehr wie ich das verarbeiten kann. Ich muss die Werte ja ihrgendwo zwischen speichern?

Hat jemand eine Idee?

mfg
 
Zuletzt bearbeitet:
Welche Datenbank? Mit MySQL geht das so:
SELECT *, (wert1 + wert2 + wert3) AS score FROM tabelle ORDER BY score DESC
 
Welche Datenbank? Mit MySQL geht das so:
SELECT *, (wert1 + wert2 + wert3) AS score FROM tabelle ORDER BY score DESC

Ja ist mysql schlussendlich muss dann in der Tabelle die benutzerid und die Punktzahl ausgegeben werden.
Die Punktzahl muss dan auch über den gesamten Zeitraffer zusammen gerechnet werden .
 
AW: Denkanstoss: Highscorer-Liste erstellen

Alle Punkte von einem Benutzer sollen zusammen gerechnet werden?
In deinem beispiel hätte also Benutzer 1 die Punktzahl von 5+6+4+6+5+9+10+6+3 und Benutzer 2 von 8+6+8+6+8+9+0+6+3?
 
AW: Denkanstoss: Highscorer-Liste erstellen

Alle Punkte von einem Benutzer sollen zusammen gerechnet werden?
In deinem beispiel hätte also Benutzer 1 die Punktzahl von 5+6+4+6+5+9+10+6+3 und Benutzer 2 von 8+6+8+6+8+9+0+6+3?

ja genau jedoch stehen im Wert2 Prozentzahlen(also entweder 100, 75, 50: bei 100 gibt es 3 Punkte, bei 75 gibt es 2 und bei 50 noch 1 Punkt)
also kann ich nicht direkt die Summe im select bilden, ich muss sie zuerst weiterverarbeiten.

Jemand ne Idee
 
AW: Denkanstoss: Highscorer-Liste erstellen

na das ist ja nun simpelste Mathematik, das bekommst du selbst hin
 
SELECT id, SUM(wert1, wert2/25-1, wert3) AS score FROM tabelle GROUP BY id ORDER BY score DESC
 
So habs jetzt geschaft vielen Dank.
nun habe ich noch ne kleine Frage. Ich möchte noch 3 Radiobuttons haben (diese Woche, diesen Monat und dieses Jahr).
Je nachdem welchen er ankreuz soll die Tabelle neuladen?
Mit welchen Mitteln kann ich das umsetzen
 
Wie denn?


in die radiobuttons nen onchangeListener der dann das Forumlar absendet (this.form.submit())

habs jetzt mit Java umgesetzt
zuerst hole ich alle Benutzer und schreibe sie in einen Vector,
dann hole ich aus der DB die zwei Werte und speichere sie in zwei Vekoren.
nun zähle ich alle Werte zusammen und schreibe den Benutzername in einen Vector und die Punkte in einen. So nun wandle ich die Vektoren in einen Array um und übergebe beide einem Bubblesort,
nun werden die Werte sortiert (und damit man noch weiss, welcher Wert zu welchem User gehört, schiebe ich den User an die gleiche Stelle wie die Punkte im anderen Vector habe)
 
Code:
SELECT `id`, SUM(SUM(`wert1`, `wert2` / 25 - 1, `wert3`)) AS `score`
FROM `tabelle`
WHERE FROM_UNIXTIME(`datum`) > NOW() - INTERVAL x DAY
GROUP BY `id`
ORDER BY `score` DESC
wobei X die anzahl der tage sind die gezählt werden sollen (also scores letzte Woche: x=7, scores letzten monat: x=30, usw)
 
Zuletzt bearbeitet:
AW: Denkanstoss: Highscorer-Liste erstellen

Java oder Javascript?
Falls ersteres: ArrayList ist besser als Vector

Wiedem aus sei, ich würde das wie Skooli mit MySQL lösen.
 
Zurück
Oben