Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Kalkulation in mySQL Abfrage

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Kalkulation in mySQL Abfrage

    Hallo!

    Es werden in einer Tabelle Daten wie Fehler und Zeit gespeichert.

    Für jede Sekunde, die ein Läufer schneller als die Vorgabezeit ist, erhält er 5 Pluspunkte, für jede Sekunde die er länger braucht erhält er eine Schlechtsekunde.

    Die Berechnung/Abfrage mache ich wie folgt:

    PHP-Code:
    SELECT (Fehler * -5) as fehlersumme, ($normzeit Teilnehmerzeit) as zeitsumme, ((Fehler * -5) + ($normzeit Teilnehmerzeit) as gesamt FROM ... ORDER BY gesamt DESC 
    Problem ist jetzt, dass ich in dieser Abfrage nicht weiß, wie ich bei einer Gutzeit mal 5 rechne, damit der Teilnehmer die korrekten Pluspunkte berechnet bekommt.

    Bitte um Hilfe, danke im Voraus!

    Liebe Grüße Philipp

  • #2
    Hallo

    Problem ist jetzt, dass ich in dieser Abfrage nicht weiß, wie ich bei einer Gutzeit mal 5 rechne,
    Was? Zeit in Sekunde * 5
    Code in formatiert: http://www.freeformatter.com/sql-formatter.html
    Code:
    SELECT
       (Fehler * -5) as fehlersumme,
       ($normzeit - Teilnehmerzeit) as zeitsumme,
       ((Fehler * -5) + ($normzeit - Teilnehmerzeit) as gesamt 
    FROM
       ... 
    ORDER BY
       gesamt DESC
    Komischer Tabellenname, ein paar Beispieldaten wären ganz gut.
    ((Fehler * -5) + (($normzeit - Teilnehmerzeit)*5)) as gesamt , vllt. kA wie dein Ergebnis aussehen soll.
    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

    Kommentar


    • #3
      Hallo, danke für die Antwort.

      Wenn die Normalzeit beispielsweise 15 Sekunden ist.
      Der Läufer braucht 13 Sekunden
      Bekommt er pro Sekunde die er schneller war 5 Punkte.
      Er erhält also hier 10 Punkte.

      Wenn er aber zB 17 Sekunden gelaufen ist, bekommt er je Sekunde die er schlechter war 1 Minuspunkt.
      Erhält hier also 2 Schlechtpunkte.

      Und wie berechne ich dies jetzt schon in der Abfrage, dass die Ausgabe in der Tabelle auch in der richtigen Reihenfolge ist.

      Kommentar


      • #4
        Code:
        SELECT
           CASE WHEN runnedTime >= 15 THEN
                points + (15 - runnedTime) * 5
           ELSE
                points - (runnedTime - 15)
           END as pointsHeReallyHas
        Zu erweitern um den Edge-Case runnedTime - 15 > points
        [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

        Kommentar


        • #5
          Wow, super danke für die Funktion!

          Funktioniert bestens.

          Vielen, vielen Dank!

          Liebe Grüße

          Kommentar

          Lädt...
          X