Ankündigung

Einklappen
Keine Ankündigung bisher.

Gleichartige Werte mehrerer Tabellen addieren und in neuer Tabelle speichern

Einklappen

Neue Werbung 2019

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

  • Gleichartige Werte mehrerer Tabellen addieren und in neuer Tabelle speichern

    Hallo zusammen,

    ich bin absoluter Neuling beim Thema Datenbanken und brauche euren Rat. Ich habe 3 Tabellen mit der Statistik eines Hobbysportteams der letzten Jahre. Für jede Saison eine. Der Spieler kann über die Nr eindeutig identifiziert werden. Jetzt würde ich gerne die Spiele, Tore, Assists, Punkte und Strafen pro Spieler addieren und in eine neue Gesamttabelle speichern.

    Aufbau bisher:
    ID NR Name Vorname Position Spiele Tore Assists Punkte Strafen

    Name, Vorname und Position sind VARCHAR Werte der Rest int. Addiert werden sollen die int Werte außer natürlich die Nummer.

    Hätte ich alles in einer Tabelle könnte ich ja quasi die Dubletten rausfiltern mit GROUP BY nr und mir die Summe der Werte ausgeben lassen. Ich hätte aber gerne eine Gesamttabelle in der jeder Spieler nur einmal vorkommt.

    Vlt. habt ihr ja einen Denkanstoß für mich dazu, ich weiß dass ist nicht viel was ich bisher habe aber ich finde ehrlich gesagt keinen richtigen Bezug bisher dazu. Ich weiß einfach nicht wo ich anfangen soll.

  • #2
    PHP-Code:
    SELECT 
         z
    .NR
         
    z.Name
         
    z.Vorname
         
    z.Position
         
    sum(z.spiele) as spiele
         
    sum(z.tore) as tore
         
    sum(z.assists) as assists
         
    sum(z.punkte) as punkte
         
    sum(z.strafen) as strafen
    FROM 
    ((SELECT 
         NR

         
    Name
         
    Vorname
         
    Position
         
    sum(Spiele) as spiele
         
    sum(Tore) as tore
         
    sum(Assists) as assists
         
    sum(Punkte) as punkte
         
    sum(Strafen) as strafen
    FROM season1 GROUP BY NR 
    )
    UNION
    (SELECT 
         NR

         
    Name
         
    Vorname
         
    Position
         
    sum(Spiele) as spiele
         
    sum(Tore) as tore
         
    sum(Assists) as assists
         
    sum(Punkte) as punkte
         
    sum(Strafen) as strafen
    FROM season2 GROUP BY NR 
    )
    UNION
    (SELECT 
         NR

         
    Name
         
    Vorname
         
    Position
         
    sum(Spiele) as spiele
         
    sum(Tore) as tore
         
    sum(Assists) as assists
         
    sum(Punkte) as punkte
         
    sum(Strafen) as strafen
    FROM season3 GROUP BY NR 
    )) z
    GROUP BY z
    .NR 

    Kommentar


    • #3
      Und nächstes Jahr frickelst da noch ein UNION dran, gell?

      Besuchen Sie auch morgen wieser: Unwissende helfen Gleichgesinnten.

      Kommentar


      • #4
        Und nächstes Jahr frickelst da noch ein UNION dran, gell?

        Besuchen Sie auch morgen wieser: Unwissende helfen Gleichgesinnten.
        Und wieder so ein "hilfreicher" Beitrag. Ich stimme dir ja im Prinzip zu, aber meinst du, dass es den beiden weiterhilft? Wie wäre es, wenn du nicht nur kritisierst (wie gesagt, die Kritik ist berechtigt), sondern auch sagst, was falsch daran ist, bzw. wie man es besser machen könnte?

        Ich habe 3 Tabellen mit der Statistik eines Hobbysportteams der letzten Jahre. Für jede Saison eine.
        Dein Datenbankschema ist nicht normalisiert, weshalb eine Lösung recht umständlich ist, wie man in #2 sieht. Informiere dich bitte über die Normalisierung und wende diese dann auf dein bisheriges Schema an.

        VG

        Kommentar


        • #5
          [QUOTE=BR2012;719548]Und wieder so ein "hilfreicher" Beitrag. Ich stimme dir ja im Prinzip zu, aber meinst du, dass es den beiden weiterhilft? Wie wäre es, wenn du nicht nur kritisierst (wie gesagt, die Kritik ist berechtigt), sondern auch sagst, was falsch daran ist, bzw. wie man es besser machen könnte?

          ich bin absoluter Neuling beim Thema Datenbanken und brauche euren Rat. Ich habe 3 Tabellen mit der Statistik eines Hobbysportteams der letzten Jahre. Für jede Saison eine.
          Der Fehler steckt im dritten Satz. Ergänze die bestehende Tabelle um eine Datums- bzs. Jahresspalte.

          War das schwer?

          Andreas

          Kommentar


          • #6
            Danke schonmal für die hilfreichen Kommentare. Ich muss allerdings zugeben, dass meine Struktur wohl Schwachpunkte hat

            Zitat von BR2012 Beitrag anzeigen
            Und wieder so ein "hilfreicher" Beitrag. Ich stimme dir ja im Prinzip zu, aber meinst du, dass es den beiden weiterhilft? Wie wäre es, wenn du nicht nur kritisierst (wie gesagt, die Kritik ist berechtigt), sondern auch sagst, was falsch daran ist, bzw. wie man es besser machen könnte?


            Dein Datenbankschema ist nicht normalisiert, weshalb eine Lösung recht umständlich ist, wie man in #2 sieht. Informiere dich bitte über die Normalisierung und wende diese dann auf dein bisheriges Schema an.

            VG

            Wenn ich das ganze richtig verstehe würde meine Struktur dann folgendermaßen aussehen:

            Tabelle Spieler:
            Nr Name Vorname Position

            Tabelle Position:
            ID Position
            1 Tor
            2 Verteidigung
            3 Sturm

            und dann für jede Saison:
            Nr Tore Assists Punkte Strafen

            Ist diese grundsätzliche Überlegung richtig? Ich will nur kurz Fragen da es doch mit ein bischen Aufwand verbunden ist die bisherigen Tabellen dahingehend abzuändern.

            Kommentar


            • #7
              Um dem Aufwand aus dem Weg zu gehen, solltest du dich nicht um die Normalisierung kümmern, sondern die Tabellen einfach in eine zusammenfassen und als zusätzliche Spalte die Saison anfügen. Dann kannst du den o.a. Select um die UNIONs bereinigen und immer ausführen.

              Ansonsten: Besser vorher überlegen wie man sowas anpackt: zum einen sind da die Spielereigenschaften, zum anderen die des Spiels, und das meine ich so, denn was genau willst du tun, wenn du mal auf ein einzelnes Spiel herunterdrillen willst (also zB wissen willst, wer wieviele Tore im Spiel x vs y gemacht hat oder dergleichen, zB um Formkurven oder dergleichen ermitteln zu können)? Mit der Tabelle oben lässt dich das nicht mehr rekonstruieren...

              Kommentar

              Lädt...
              X