Hallo alle,
ich arbeite gerade an einem non-kommerziellen Tippspiel (Fussball WM) für mich privat, ein paar Freunde. Ggf. wird es auch bei meiner Arbeit zum Einsatz kommen. Für mögliche Ansprüche an die Performance: Ich gehe von 50 bis 400 Usern aus.
Ich stehe ich vor einer (für mich) sehr Anspruchsvollen Aufgabe: Nämlich das berechnen der Score der User und das anschließende Ranking.
Folgender Aufbau der vermutlich relevanten Tabellen (MySql) (unrelevante Felder habe ich ausgelassen)
Score
- Der Score ist abhängig davon wie oft ein nutzer "perfekt", "differenz" oder "tendenz" richtig getippt hat.
- Je Nach Phase geben diese verschieden viele Punkte:
- Gruppenphase: 5 Pkt (Perfekt) | 3 Pkt (Differenz) | 1 Pkt (Tendenz)
- K.O.-Phase: 10 Pkt (Perfekt) | 6 Pkt (Differenz) | 2 Pkt (Tendenz)
- Finale: 15 Pkt (Perfekt) | 9 Pkt (Differenz) | 3 Pkt (Tendenz)
Anforderung 1: Gesamtranking ermitteln
- Ich will das Ranking (z.B. Top 100) der Spieler ermitteln
- Anhand wie oft jemand perfekt, diffrenz oder tendenz getippt hat werden die Punkte des Spielers ermittelt (unter Berücksichtigung der Phase)
- Es werden natürlich nur die Spiele ausgewertet die finished auf 1 gesetzt haben (die also vom admin "ausgewertet" wurden)
- Wenn Spieler gleichviele Punkte haben kommen sie auf den selben Platz. Der "Platzzähler" soll aber weiter hoch gehen -> Beispiel: Platz 1. Bob, Platz 1. Max, Platz 3. Lorem
- Die Info wie oft ein Spieler pefekt, differenz oder tendenz getippt hat wird auch benötigt (ebenfalls sortiert nach phase)
Die Ergebnistabelle sollte dann ungefähr so aussehen:
mit den entsprechend gefüllten Werten der User.
Anforderung 2: Einzelranking ermitteln
- Wäre das selbe wie oben, nur das ich die Informationen von einem bestimmten User (anhand der user_id) benötigen würde.
Falls sich jemand berufen fühlt mir hier zu helfen würde mich das sehr freuen!
ich arbeite gerade an einem non-kommerziellen Tippspiel (Fussball WM) für mich privat, ein paar Freunde. Ggf. wird es auch bei meiner Arbeit zum Einsatz kommen. Für mögliche Ansprüche an die Performance: Ich gehe von 50 bis 400 Usern aus.
Ich stehe ich vor einer (für mich) sehr Anspruchsvollen Aufgabe: Nämlich das berechnen der Score der User und das anschließende Ranking.
Folgender Aufbau der vermutlich relevanten Tabellen (MySql) (unrelevante Felder habe ich ausgelassen)
Code:
user +---------+-----------+------------+-----------+ | user_id | firstname | lastname | username | +---------+-----------+------------+-----------+ | 1 | Bob | Baumeister | Der_Bauer | | 2 | Max | Muster | mmuster | | 3 | Lorem | Ipsum | bla123 | +---------+-----------+------------+-----------+ bet +--------+---------+---------+---------------+---------------+---------+------------+-------+ | bet_id | user_id | game_id | team_1_goals | team_2_goals | perfect | difference | trend | +--------+---------+---------+---------------+---------------+---------+------------+-------+ | 1 | 2 | 17 | 4 | 2 | 1 | 0 | 0 | | 2 | 2 | 18 | 3 | 1 | 0 | 1 | 0 | | 3 | 1 | 17 | 2 | 1 | 0 | 0 | 1 | | 4 | 2 | 19 | 2 | 3 | 1 | 0 | 0 | | 5 | 3 | 17 | 3 | 3 | 0 | 0 | 0 | +--------+---------+---------+---------------+---------------+---------+------------+-------+ - Alle abgegeben Tipps sind hier eingetragen. - Über die Felder user_id und game_id sind die entsprechend einem User und einem Spiel zugeordnet. - Die Felder team_1_goals und team_2_goals beinhalten den Tipp des Spielers. - Wenn er Perfekt tippt (ergebnis getroffen) wird das feld perfect auf 1 gesetzt - wenn er die Differenz richtig tippt (z.B. sein Tipp = 3:1, Endergebnis = 4:2) wird das Feld difference auf 1 gesetzt - wenn er immerhin die Tendenz (also den sieger) richtig tippt wird das feld trend auf 1 gesetzt. game +---------+--------------+---------------+-----------+-----------+ | game_id | team_1_goals | team_2_goals | phase_id | finished | +---------+--------------+---------------+-----------+-----------+ | 17 | 4 | 2 | 1 | 1 | | 18 | 5 | 2 | 1 | 1 | | 19 | 2 | 3 | 2 | 0 | +---------+--------------+---------------+-----------+-----------+ - Hier sind alle Spiele eingetragen. - Wenn das Spiel vom Admin ausgewertet ist (Das Endergebnis wird eingetragen) werden die Felder team_1_goals und team_2_goals entsprechen gefüllt und das feld finished auf 1 (true) gesetzt - Im Feld phase_id ist hinterlegt ob es sich um ein Spiel der "Gruppenphase" (1), "Ko Phase" (2) oder das Finale (3) handelt
- Der Score ist abhängig davon wie oft ein nutzer "perfekt", "differenz" oder "tendenz" richtig getippt hat.
- Je Nach Phase geben diese verschieden viele Punkte:
- Gruppenphase: 5 Pkt (Perfekt) | 3 Pkt (Differenz) | 1 Pkt (Tendenz)
- K.O.-Phase: 10 Pkt (Perfekt) | 6 Pkt (Differenz) | 2 Pkt (Tendenz)
- Finale: 15 Pkt (Perfekt) | 9 Pkt (Differenz) | 3 Pkt (Tendenz)
Anforderung 1: Gesamtranking ermitteln
- Ich will das Ranking (z.B. Top 100) der Spieler ermitteln
- Anhand wie oft jemand perfekt, diffrenz oder tendenz getippt hat werden die Punkte des Spielers ermittelt (unter Berücksichtigung der Phase)
- Es werden natürlich nur die Spiele ausgewertet die finished auf 1 gesetzt haben (die also vom admin "ausgewertet" wurden)
- Wenn Spieler gleichviele Punkte haben kommen sie auf den selben Platz. Der "Platzzähler" soll aber weiter hoch gehen -> Beispiel: Platz 1. Bob, Platz 1. Max, Platz 3. Lorem
- Die Info wie oft ein Spieler pefekt, differenz oder tendenz getippt hat wird auch benötigt (ebenfalls sortiert nach phase)
Die Ergebnistabelle sollte dann ungefähr so aussehen:
Code:
+-------+----------+-----------+----------+-----------+----------------------+-------------------------+--------------------+-----------------+--------------------+---------------+----------------+-------------------+--------------+ | platz | username | firstname | lastname | userscore | gruppenphase_perfect | gruppenphase_difference | gruppenphase_trend | kophase_perfect | kophase_difference | kophase_trend | finale_perfect | finale_difference | finale_trend | +-------+----------+-----------+----------+-----------+----------------------+-------------------------+--------------------+-----------------+--------------------+---------------+----------------+-------------------+--------------+
Anforderung 2: Einzelranking ermitteln
- Wäre das selbe wie oben, nur das ich die Informationen von einem bestimmten User (anhand der user_id) benötigen würde.
Falls sich jemand berufen fühlt mir hier zu helfen würde mich das sehr freuen!
Kommentar