Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme bei der Formulierung zweier Abfragen.

Einklappen

Neue Werbung 2019

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

  • #16
    Natürlich fasse ich das nicht böse auf. Ich meine allerdings bereits einen sqlfiddle Link in meinen Startpost gesetzt zu haben. Natürlich basiert der noch auf mein altes Tabellensystem. Aber das neue existiert schlicht noch nicht, da ich erst das Grundkonzept erfragen will, bevor ich die neuen Tabellen erstelle.

    Grob kann ich den derzeitigen Plan nochmal auflisten. Drei Tabellen finden sich bereits in meinen sqlfiddle Link im Startpost. Neben einer Tabelle die Rohdaten von einen Rennen enthält, finden sich noch die Fahrertabelle "driver" und die noch unvollständige "calc_data" Tabelle die nach derzeitigen Erkenntnisstand laut Hellbringer wegsoll. Dort finden sich die Punkte die vergeben werden sollen und im alten System als globaler Standort dienten, um bei Veränderung schnell die Zahlen abändern zu können.

    Fahrertabelle:
    driver_id rank no driver_name driver_name_short team_membership status value
    driver 1 20 55 d1 team 1 Reserve 10
    driver 2 9 3 d2 team 2 Starting 37
    ... ... ... ... ... ... ... ...

    Werte zum Rechnen (Tabelle calc_data):
    id winner_points points_for_pos1 points_for_pos2 points_for_pos3 scoring_points_pos_1 scoring_points_pos_2 scoring_points_pos_3 scoring_points_pos_4 scoring_points_pos_5 scoring_points_pos_6 scoring_points_pos_7 scoring_points_pos_8 scoring_points_pos_9 scoring_points_pos_10 scoring_points_pos_else scoring_points_pos_nc
    Wie gesagt, die zwei Tabellen finden sich so auf sqlfiddle in meinen Startpost.

    Nun habe ich in etwa 20 Rennstrecken. Fahrer werden Ergebnissesowohl beim Qualifying als auch im Rennen erzielen. Diese Daten sollen gespeichert werden. Ich dachte ich mache für jedes Rennen eine Tabelle wo ich diese Werte eintrage.
    Meine ursprüngliche Überlegung war, dass besagte Tabelle nur Rohdaten fasst und ich Abfragen per view speichere wo Rohdatentabelle (Fahrerergebnisse bei Event) + Rechenwerte (calc_data) das entsprechende view mit den gewünschten Zieldaten ergeben. In meinen Startpost ist mir das im Beispiel Abfrage 1 gelungen. Abfrage 2 wurde mir zu komplex.

    hellfire meinte ich solle die Tabelle calc_data streichen, die zu vergebenen Punkte per Script ermitteln und diese in einer Tabelle speichern. Natürlich überlege ich jetzt wie die Tabelle aussehen soll. Ich dachte ich mach wieder pro Rennstrecke eine Tabelle und speiche dort nun nicht nur die Rohdaten (Fahrerergebnisse bei Event), sondern auch die zu vergebenen Punkte die jetzt per php Eingabemaske automatisch errechnet werden, sobald die Rohdaten da sind.
    Bevor ich das mache, will ich ein Problem klären, das ich es bereits jetzt erkenne. Ich müsste über 20 Tabellen hinweg sehr viele Summen ermitteln. Habe ich als Anfänger noch nicht gemacht und frage desshalb ob das mit aneinanderreihen von JOIN oder UNION funktioniert, oder ob es hier etwas anderes gäbe. Eventuell ist aber auch das Konzept nicht das richtige. Dann bin ich offen für andere Ansätze.

    Kommentar


    • #17
      Ich dachte ich mache für jedes Rennen eine Tabelle wo ich diese Werte eintrage.
      und das bleibt quatsch. Du brauchst dafür 1 Tabelle und 1 zusätzliche Spalte in der du die Rennen voneinander abgrenzt.

      statt
      Code:
      CREATE TABLE `singapore_race_result` (
        `driver_id` tinyint(4) UNSIGNED NOT NULL,
        `pos` tinyint(4) NOT NULL,
        `laps` tinyint(4) NOT NULL,
        `time` varchar(11) COLLATE utf8_unicode_ci NOT NULL,
        `pts` tinyint(4) NOT NULL
      )
      möchtest du sowas
      Code:
      CREATE TABLE `race_result` (
        `driver_id` tinyint(4) UNSIGNED NOT NULL,
        `pos` tinyint(4) NOT NULL,
        `laps` tinyint(4) NOT NULL,
        `time` varchar(11) COLLATE utf8_unicode_ci NOT NULL,
        `pts` tinyint(4) NOT NULL
        `race` varchar(255) NOT NULL
      )
      In race würde in diesem fall dann z.B. singapore drinstehen.

      Anbei
      Code:
        `time` varchar(11) COLLATE utf8_unicode_ci NOT NULL,
      varchar ist kein geeigneter Datentyp für Zeiten, dafür gibt es entsprechende Zeitdatentypen.

      Kommentar


      • #18
        varchar ist kein geeigneter Datentyp für Zeiten, dafür gibt es entsprechende Zeitdatentypen.
        Ja thx für den Hinweis. Hatte ich sogar bedacht. phpMyAdmin hatte mir leider eine Fehlermeldung ausgeworfen als ich in ein Time Feld einen dreistelligen Sekundenbereich ablegen wollte (1:43.883). Deshalb die vorübergehende Notlösung varchar.. Mittlerweile löse ich das Problem mit Float und rechne die Zahl um -> 103,883. Hoffe das ist professioneller.

        Den Streckennamen anfügen ist denkbar logisch. Da ärgere ich mich glatt nicht selbst das offensichtliche gesehen zu haben. Mir kam es schlicht nicht in den Sinn, dass ich die einzelnen Fahrer mehrmals in einer Tabelle listen könnte. Warum auch immer.

        Danke dir.

        Kommentar

        Lädt...
        X