Ankündigung

Einklappen
Keine Ankündigung bisher.

Berechnung über mehrere Abfragen aus mysql

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Berechnung über mehrere Abfragen aus mysql

    Hallo zusammen

    Ich knoble an einem kleineren Problem. Ich möchte gerne eine Spielerstatistik-Prognose einer Hockeymannschaft berechnen. Für jeden Spieler soll auf der Website in einer Tabelle angezeigt werden, wieviele Spiele, Tore, Punkte etc er bei Saison-Ende haben wird, wenn seine Leistung bleibt wie sie ist und er so häufig spielt, wie er es bislang getan hat.

    Betroffen sind 2 mysql-Tabellen: die stats_player und die standings Tabelle. In beiden Tabellen sind die folgenden Spalten vorhanden:

    SP = Anzahl gespielte Partien
    T = Anzahl erzielte Tore
    A = Anzahl Vorlagen
    PKT = Anzahl Punkte

    Hier die beiden Abfragen für die Daten aus mysql:

    mysql_select_db($database_dbname, $dbname);
    $query_stats_player = "SELECT * FROM `stats_player` ";
    $stats_player = mysql_query($query_stats_player, $dbname) or die(mysql_error());
    $row_stats_player = mysql_fetch_assoc($stats_player);
    $totalRows_stats_player = mysql_num_rows($stats_player);

    $query_standings = "SELECT * FROM standings";
    $standings = mysql_query($query_standings, $dbname) or die(mysql_error());
    $row_standings = mysql_fetch_assoc($standings);
    $totalRows_standings = mysql_num_rows($standings);

    Meine Berechnung hab ich mir nun so vorgestellt, dass ich den Leistungsfaktor berechne und diesen multipliziere mit der Zahl, welche sich aus der Differenz von den maximal 82 Spielen und den bereits erledigten Spielen (gespeichert in Standings, Spalte SP) ergibt.

    $tendenz_sp = $row_stats_player['SP'] / $row_standings['SP'];
    $offene_sp = 82 - $row_standings['SP'];
    $max_sp_bei_tendenz_sp = $offene_sp * $tendenz_sp;
    $prognose = $max_sp_bei_tendenz_sp + $row_stats_player['SP'];

    schlussendlich soll in der tabelle die variable $prognose ausgegeben werden:

    echo $prognose;

    mein bespiel noch in zahlen:

    das team hat bis jetzt 34 spiele ausgetragen. spieler xy hat davon 29 spiele mitgespielt.

    $tendenz_sp : 29 / 34 = 0.85294118

    jetzt wird berechnet, wieviele spiele von den total 82 noch auszutragen sind:

    $offene_sp : 82 - 34 = 48

    wenn unser spieler im gleichen verhältnis seine anzahl spiele austrägt (also nicht ganz jedes) so wird er bis ende saison noch die folgende anzahl spiele austragen:

    $max_sp_bei_tendenz_sp : 48 * 0.85294118 = 40.9411765

    und zum schluss noch die bereits ausgetragenen partien dazuzählen, damit die endprognose stimmt:

    $prognose : 40.9411765 + 29 = 69.9411765

    die zahl 70 (runden wir das ganze auf eine vernünftige zahl auf!) wird also schlussendlich in der tabelle als prognose eingetragen.

    die gleiche berechnung kann jetzt für die spalte tore, vorlagen und punkte wiederholt werden.

    -> das ganze funktionert aber nicht kann mir jemand sagen, wo das problem liegen könnte?

    Vielen Dank für jede Hilfe!

  • #2
    "Funktioniert nicht" ist keine vernünftige Fehlerbeschreibung. Es ist wirklich viel einfacher dir zu helfen wenn du genau sagst, was nicht geht, ob es Fehlermeldungen oder warnings gibt (error_reporting(E_ALL)), was das momentante Ergebnis und was das erwartete Ergebnis ist.

    Außerdem ist mir noch nicht ganz klar was jeweils in den 2 Tabellen genau drin steht (sind standings die bereits gespielten Spiele und dort stehen die Daten der ganzen Mannschaft oder wie?).....

    Im Prinzip ist das doch ganz einfach, und dein Ansatz passt imo auch...:
    berechne wieviel Porzent der Spiele der Spieler bislang gespielt hat.
    berechne wieviele tore der Spieler im Durchschnitt pro Spiel bisher geschossen hat, wieviele Vorlagen im Schnitt und wieviele Punkte...

    Schaue nach wieviele Spiele es noch sind, multipliziere mit dem Prozentwert => Anzahl an noch ausstehenden Spielen. Jetzt kannst du einfach wieder mit den jeweiligen Durchschnittswerten multiplizieren.

    (das ist eine [einfache] Möglichkeit, es gibt natürlich 1000ende Wege....)
    [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

    Kommentar


    • #3
      vielen dank agrajag für deine antwort.

      aktueller stand: es wird mir bei der ausgabe keine fehlermeldung angezeigt. als resultat kommt die zahl 0. ich gehe davon aus, dass meine schreibweise nicht korrekt ist.

      in table "standings" sind pro mannschaft die aktuellen daten zur tabellenlage gespeichert. also mannschafts-id, teamname, anzahl gespielte partien, anzahl siege, anzahl untentschieden, anzahl niederlagen, anzahl tore geschossen, anzahl tore erhalten, anzahl punkte.

      in table "player-stats" sind die daten über die statistiken jedes spielers in dieser mannschaft. spieler-id, name, anzahl spiele, anzahl tore, anzahl vorlagen, anzahl strafen, anzahl punkte etc.

      all diese daten hole ich mit der abfrage in eine data-row. könnt ihr vielleicht im speziellen auf die variablen und die berechnungs-schreibweise in meinem beispiel achten? kann ich solche berechnungen direkt ausführen und das resultat in eine neue variable speichern? gibt es ein problem, wenn die ausgabe ein assoc_fetch darstellt, also eine berechnung für jeden spieler in dieser mannschaft als ziel hat?

      leider kann ich nicht viel mehr daten liefern, da ich keine fehlermeldungen erhalte.

      Kommentar

      Lädt...
      X