Sportrangliste realisieren....

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Sportrangliste realisieren....

    Hallo!

    Ich möchte per mysql und php eine Fußballtabelle realisieren.

    Nun fängt es schon (für mich als Anfänger) beim schwierigen Datenbankdesign an.

    Folgende Überlegungen habe ich (nach Hilfestellung einiger Fachleute) gemacht:

    3. Tabellen mit folgenden Feldern:
    1.
    mannschaften
    | ms_id
    | ms_name
    2.
    spieltage
    | st_id
    | st_tagnr

    3.
    spiel
    | sp_id
    | sp_spieltag_id (identisch mit der st_tagnr)
    | sp_datum
    | sp_heim_id (identisch mit ms_id)
    | sp_gast_id (identisch mit ms_id)
    | sp_tore_heim
    | sp_tore_gast
    | sp_punkte_heim
    | sp_punkte_gast

    Was meint ihr dazu - wäre das ein gutes DB-Design? oder was kann/sollte man ändern?

    Aus diesen Tabellen soll dann per Select eben eine Tabelle erstellt werden - die ungefähr so aussieht:

    Platz Mannschaft Tore Punkte
    1. FS Krücke 4:3 3
    .
    .
    .
    .

    Schon mal vielen Dank für eure Hilfe

    Gruß

    quirinov

  • #2
    Voll in Ordnung
    Ich würde sp_spieltag_id (identisch mit der st_id) verknüpfen.

    Vielleicht noch Anzahl Zuseher?
    Anzahl Rote, Gelbe Karten?
    Bemerkung: "Absage aufgrund Mitsumi" ?
    ....

    Comment


    • #3
      Original geschrieben von hand
      Bemerkung: "Absage aufgrund Mitsumi" ?
      ....
      In Gedanken schon bei der WM ?
      Aber ein Mitsumi wirds wohl kaum geben, hoffe ich doch mal..
      [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
      [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
      [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

      © Harald Schmidt

      Comment


      • #4
        SQL-Abfrage

        Vielen Dank für Deine Hilfe!

        Könntest Du mir vielleicht auch weiter helfen - wenn es um die entsprechenden SQL-Abfragen geht... Bisher hab ich hinbekommen - jeweils die Tore und Punkte zusammen zu zählen - die eine Mannschaft erziehlt/bekommen hat - egal ob sie daheim oder auswärts gespielt hat... jetzt hätte ich aber auch noch gern die Gegentore mit einbezogen... wie kann ich das machen - dass ich die zusammenzähle (also von Heim- und Auswärtsspielen) und dann eben wie in ner Fußballtabelle ausgebe:

        Tore
        3:4

        Wobei die vordere Zahl hab ich ja bereits - nur die hintere - das funktioniert noch nicht - die Abfrage dazu - krieg ich auch noch hin... ist eben genau umgekehrt - wie die vorherige... aber wie kann ich das dann darstellen... mein problem: ich sortiere ja die erste tabelle nach den punkten und toren... das bringt dann das problem mit sich - dass ich die zweite abfrage nicht danach sortieren kann - schließlich sind da ja andere punkte und tore... wie in der ersten...

        Danke schon mal!

        Comment


        • #5
          Hast du mal ein Beispiel Dump mit Beispiel Daten für micn ?
          Dann schau ich mal.
          [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
          [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
          [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

          © Harald Schmidt

          Comment


          • #6
            DUMP???

            Was meinst du denn mit DUMP?? Immer diese Fachausdrücke :-)

            Bin noch absoluter Neuling - deshalb verstehe ich nicht alles auf Anhieb....

            Comment


            • #7
              Ein Dump ist ein Backup einer Datenbank.
              Damit ich die Tabellen nicht selbst erstellen muss und Daten einfügen muss. Aber lass mal, ich hab die Tabellen schon nach obiger Struktur erstellt.
              [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
              [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
              [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

              © Harald Schmidt

              Comment


              • #8
                Danke

                Danke!

                Hätte auch garnicht gewusst - wie ich so ein DUMP mache.... kannst du mir ja vielleicht auch mal sagen...

                dann bin ich wieder etwas schlauer...

                ich hab mir darüber schon die ganze zeit den kopf zerbrochen und überlegt - ob da ne temporäre tabelle helfen könnte - aber das hab ich nicht hingekriegt...

                Comment


                • #9
                  So, folgende Abfrage liefert dir eine Tabelle
                  mit ms_id,ms_name,Punkte der Mannschaft, Tore der Mannschaft, Gegentore der Mannschaft.
                  Code:
                  SELECT ms.ms_id,ms.ms_name, 
                  IF(sp.sp_heim_id=ms.ms_id,SUM(sp.sp_punkte_heim),SUM(sp.sp_punkte_gast)) as ms_punkte, 
                  IF(sp.sp_heim_id=ms.ms_id,SUM(sp.sp_tore_heim),SUM(sp.sp_tore_gast)) as ms_tore, 
                  IF(sp.sp_heim_id=ms.ms_id,SUM(sp.sp_tore_gast),SUM(sp.sp_tore_heim)) as ms_gtore
                  FROM mannschaften ms 
                  LEFT JOIN spiel sp ON (sp.sp_heim_id=ms.ms_id OR sp.sp_gast_id=ms.ms_id) 
                  GROUP BY ms.ms_id ORDER BY ms_punkte DESC,ms_tore DESC,ms_gtore ASC;
                  Um es zu testen, habe ich mal 2 Spieltage erstellt:
                  1) Deutschland - England (0:2) | 3 Punkte für England
                  2) Brasilien - Deutschland (3:3) | je 1 Punkt für beide Ms

                  Also kommt heraus bei der Tabelle:
                  Code:
                  +-------+-------------+-----------+---------+----------+
                  | ms_id | ms_name     | ms_punkte | ms_tore | ms_gtore |
                  +-------+-------------+-----------+---------+----------+
                  |     2 | England     |         3 |       2 |        0 |
                  |     3 | Brasilien   |         1 |       3 |        3 |
                  |     1 | Deutschland |         1 |       3 |        5 |
                  +-------+-------------+-----------+---------+----------+
                  Brasilien liegt aufgrund des besseren Torverhältnisses vorne.

                  Ein Dump der Tabelle zum Nachvollziehen (mit phpmyadmin ausführen)
                  Code:
                  Datenbank test auf localhost
                  # phpMyAdmin MySQL-Dump
                  # version 2.2.6-rc1
                  # [url]http://phpwizard.net/phpMyAdmin/[/url]
                  # [url]http://phpmyadmin.sourceforge.net/[/url] (download page)
                  #
                  # Host: localhost
                  # Erstellungszeit: 28. April 2002 um 15:09
                  # Server Version: 3.23.49
                  # PHP-Version: 4.1.2
                  # Datenbank : `test`
                  # --------------------------------------------------------
                  
                  #
                  # Tabellenstruktur für Tabelle `mannschaften`
                  #
                  
                  CREATE TABLE mannschaften (
                    ms_id mediumint(5) unsigned NOT NULL auto_increment,
                    ms_name varchar(120) NOT NULL default '',
                    PRIMARY KEY  (ms_id)
                  ) TYPE=MyISAM;
                  
                  #
                  # Daten für Tabelle `mannschaften`
                  #
                  
                  INSERT INTO mannschaften VALUES (1, 'Deutschland');
                  INSERT INTO mannschaften VALUES (2, 'England');
                  INSERT INTO mannschaften VALUES (3, 'Brasilien');
                  # --------------------------------------------------------
                  
                  #
                  # Tabellenstruktur für Tabelle `spiel`
                  #
                  
                  CREATE TABLE spiel (
                    sp_id mediumint(5) unsigned NOT NULL auto_increment,
                    sp_spieltag_id mediumint(5) unsigned NOT NULL default '0',
                    sp_datum datetime NOT NULL default '0000-00-00 00:00:00',
                    sp_heim_id mediumint(5) unsigned NOT NULL default '0',
                    sp_gast_id mediumint(5) unsigned NOT NULL default '0',
                    sp_tore_heim tinyint(3) unsigned NOT NULL default '0',
                    sp_tore_gast tinyint(3) unsigned NOT NULL default '0',
                    sp_punkte_heim tinyint(1) unsigned NOT NULL default '0',
                    sp_punkte_gast tinyint(1) NOT NULL default '0',
                    PRIMARY KEY  (sp_id)
                  ) TYPE=MyISAM;
                  
                  #
                  # Daten für Tabelle `spiel`
                  #
                  
                  INSERT INTO spiel VALUES (1, 1, '2002-04-27 14:43:06', 1, 2, 0, 2, 0, 3);
                  INSERT INTO spiel VALUES (2, 2, '2002-04-28 14:43:46', 3, 1, 3, 3, 1, 1);
                  # --------------------------------------------------------
                  
                  #
                  # Tabellenstruktur für Tabelle `spieltage`
                  #
                  
                  CREATE TABLE spieltage (
                    st_id mediumint(5) unsigned NOT NULL auto_increment,
                    st_tagnr mediumint(5) unsigned NOT NULL default '0',
                    PRIMARY KEY  (st_id)
                  ) TYPE=MyISAM;
                  
                  #
                  # Daten für Tabelle `spieltage`
                  #
                  
                  INSERT INTO spieltage VALUES (1, 1);
                  INSERT INTO spieltage VALUES (2, 2);
                  Last edited by Troublegum; 28-04-2002, 15:11.
                  [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
                  [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
                  [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

                  © Harald Schmidt

                  Comment


                  • #10
                    Danke

                    Vielen Dank!

                    Wußte garnicht - dass ich da auch if einbauen kann... das war wohl mein größtes Problem...

                    Kannst Du mir vielleicht ein gutes Buch zu mysql empfehlen - mit dem man von Anfang an lernen kann....

                    wäre nett!

                    Danke nochmals!

                    Comment


                    • #11
                      Fehler entdeckt...

                      Hallo!

                      Ich habe das natürlich jetzt gleich ausprobiert - alles so übernommen - wie du es vorgeben hast - nur andere Daten eingegeben...

                      Folgenden DUMP Struktur mit Inhalt hab ich:

                      # phpMyAdmin MySQL-Dump
                      # version 2.2.6
                      # http://phpwizard.net/phpMyAdmin/
                      # http://www.phpmyadmin.net/ (download page)
                      #
                      # Host: localhost
                      # Erstellungszeit: 28. April 2002 um 15:34
                      # Server Version: 3.23.44
                      # PHP-Version: 4.0.6
                      # Datenbank : `test`
                      # --------------------------------------------------------

                      #
                      # Tabellenstruktur für Tabelle `mannschaften`
                      #

                      CREATE TABLE mannschaften (
                      ms_id mediumint(5) unsigned NOT NULL auto_increment,
                      ms_name varchar(120) NOT NULL default '',
                      PRIMARY KEY (ms_id)
                      ) TYPE=MyISAM;

                      #
                      # Daten für Tabelle `mannschaften`
                      #

                      INSERT INTO mannschaften VALUES (1, 'SG Parr');
                      INSERT INTO mannschaften VALUES (2, 'SV Habkirchen');
                      INSERT INTO mannschaften VALUES (3, 'SF Walsheim');
                      INSERT INTO mannschaften VALUES (4, 'SV Gersheim');
                      # --------------------------------------------------------

                      #
                      # Tabellenstruktur für Tabelle `spiel`
                      #

                      CREATE TABLE spiel (
                      sp_id mediumint(5) unsigned NOT NULL auto_increment,
                      sp_spieltag_id mediumint(5) unsigned NOT NULL default '0',
                      sp_datum datetime NOT NULL default '0000-00-00 00:00:00',
                      sp_heim_id mediumint(5) unsigned NOT NULL default '0',
                      sp_gast_id mediumint(5) unsigned NOT NULL default '0',
                      sp_tore_heim tinyint(3) unsigned NOT NULL default '0',
                      sp_tore_gast tinyint(3) unsigned NOT NULL default '0',
                      sp_punkte_heim tinyint(1) unsigned NOT NULL default '0',
                      sp_punkte_gast tinyint(1) NOT NULL default '0',
                      PRIMARY KEY (sp_id)
                      ) TYPE=MyISAM;

                      #
                      # Daten für Tabelle `spiel`
                      #

                      INSERT INTO spiel VALUES (1, 1, '2002-04-28 15:25:34', 1, 2, 1, 0, 3, 0);
                      INSERT INTO spiel VALUES (2, 1, '2002-04-28 15:26:17', 3, 4, 1, 0, 3, 0);
                      INSERT INTO spiel VALUES (3, 2, '2002-04-28 15:26:45', 2, 3, 2, 0, 3, 0);
                      INSERT INTO spiel VALUES (4, 2, '2002-04-28 15:27:12', 4, 1, 2, 3, 0, 3);
                      INSERT INTO spiel VALUES (5, 3, '2002-04-28 15:27:40', 1, 3, 1, 1, 1, 1);
                      INSERT INTO spiel VALUES (6, 3, '2002-04-28 15:28:35', 2, 4, 3, 0, 3, 0);
                      # --------------------------------------------------------

                      #
                      # Tabellenstruktur für Tabelle `spieltage`
                      #

                      CREATE TABLE spieltage (
                      st_id mediumint(5) unsigned NOT NULL auto_increment,
                      st_tagnr mediumint(5) unsigned NOT NULL default '0',
                      PRIMARY KEY (st_id)
                      ) TYPE=MyISAM;

                      #
                      # Daten für Tabelle `spieltage`
                      #

                      INSERT INTO spieltage VALUES (1, 1);
                      INSERT INTO spieltage VALUES (2, 2);
                      INSERT INTO spieltage VALUES (3, 3);


                      Mit Deiner Abfrage taucht jetzt nur ein Fehler auf... SG Parr müsste eigentlich 7 Punkte haben - hat aber nur 4 - ich habe schon versucht den Fehler ausfindig zu machen - aber leider nix gefunden...

                      Vielleicht kannst Du mir ja nochmal helfen!

                      Danke schon mal!

                      Comment


                      • #12
                        Fehler entdeckt...

                        Hallo!

                        Ich habe das natürlich jetzt gleich ausprobiert - alles so übernommen - wie du es vorgeben hast - nur andere Daten eingegeben...

                        Folgenden DUMP Struktur mit Inhalt hab ich:

                        # phpMyAdmin MySQL-Dump
                        # version 2.2.6
                        # http://phpwizard.net/phpMyAdmin/
                        # http://www.phpmyadmin.net/ (download page)
                        #
                        # Host: localhost
                        # Erstellungszeit: 28. April 2002 um 15:34
                        # Server Version: 3.23.44
                        # PHP-Version: 4.0.6
                        # Datenbank : `test`
                        # --------------------------------------------------------

                        #
                        # Tabellenstruktur für Tabelle `mannschaften`
                        #

                        CREATE TABLE mannschaften (
                        ms_id mediumint(5) unsigned NOT NULL auto_increment,
                        ms_name varchar(120) NOT NULL default '',
                        PRIMARY KEY (ms_id)
                        ) TYPE=MyISAM;

                        #
                        # Daten für Tabelle `mannschaften`
                        #

                        INSERT INTO mannschaften VALUES (1, 'SG Parr');
                        INSERT INTO mannschaften VALUES (2, 'SV Habkirchen');
                        INSERT INTO mannschaften VALUES (3, 'SF Walsheim');
                        INSERT INTO mannschaften VALUES (4, 'SV Gersheim');
                        # --------------------------------------------------------

                        #
                        # Tabellenstruktur für Tabelle `spiel`
                        #

                        CREATE TABLE spiel (
                        sp_id mediumint(5) unsigned NOT NULL auto_increment,
                        sp_spieltag_id mediumint(5) unsigned NOT NULL default '0',
                        sp_datum datetime NOT NULL default '0000-00-00 00:00:00',
                        sp_heim_id mediumint(5) unsigned NOT NULL default '0',
                        sp_gast_id mediumint(5) unsigned NOT NULL default '0',
                        sp_tore_heim tinyint(3) unsigned NOT NULL default '0',
                        sp_tore_gast tinyint(3) unsigned NOT NULL default '0',
                        sp_punkte_heim tinyint(1) unsigned NOT NULL default '0',
                        sp_punkte_gast tinyint(1) NOT NULL default '0',
                        PRIMARY KEY (sp_id)
                        ) TYPE=MyISAM;

                        #
                        # Daten für Tabelle `spiel`
                        #

                        INSERT INTO spiel VALUES (1, 1, '2002-04-28 15:25:34', 1, 2, 1, 0, 3, 0);
                        INSERT INTO spiel VALUES (2, 1, '2002-04-28 15:26:17', 3, 4, 1, 0, 3, 0);
                        INSERT INTO spiel VALUES (3, 2, '2002-04-28 15:26:45', 2, 3, 2, 0, 3, 0);
                        INSERT INTO spiel VALUES (4, 2, '2002-04-28 15:27:12', 4, 1, 2, 3, 0, 3);
                        INSERT INTO spiel VALUES (5, 3, '2002-04-28 15:27:40', 1, 3, 1, 1, 1, 1);
                        INSERT INTO spiel VALUES (6, 3, '2002-04-28 15:28:35', 2, 4, 3, 0, 3, 0);
                        # --------------------------------------------------------

                        #
                        # Tabellenstruktur für Tabelle `spieltage`
                        #

                        CREATE TABLE spieltage (
                        st_id mediumint(5) unsigned NOT NULL auto_increment,
                        st_tagnr mediumint(5) unsigned NOT NULL default '0',
                        PRIMARY KEY (st_id)
                        ) TYPE=MyISAM;

                        #
                        # Daten für Tabelle `spieltage`
                        #

                        INSERT INTO spieltage VALUES (1, 1);
                        INSERT INTO spieltage VALUES (2, 2);
                        INSERT INTO spieltage VALUES (3, 3);


                        Mit Deiner Abfrage taucht jetzt nur ein Fehler auf... SG Parr müsste eigentlich 7 Punkte haben - hat aber nur 4 - ich habe schon versucht den Fehler ausfindig zu machen - aber leider nix gefunden... liegt wohl daran - dass ms_name irgendwie alphabetisch sortiert wird... Ist nämlich genau umgekehrt - Walsheim hat die Punktzahl von SG Parr und SG Parr die von Walsheim.... Aber wo liegt der Fehler???

                        Vielleicht kannst Du mir ja nochmal helfen!

                        Danke schon mal!

                        Comment


                        • #13
                          Hallo,

                          tut mir Leid, ich hatte die Abfrage nur mit meinem Beispiel probiert. Ich werde das mal dein Beispiel überprüfen.

                          sorry
                          [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
                          [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
                          [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

                          © Harald Schmidt

                          Comment


                          • #14
                            Macht ja nix

                            Hallo!

                            Macht ja nix...

                            weiß immer noch nicht woran es liegt - aber wie gesagt - der sortiert ms_name alphabetisch - kann natürlich auch rein zufällig sein...

                            noch ne möglichkeit wäre - dass da irgendwas beim zusammenzählen der punkte falsch läuft... wegen heim bzw. gast recht...

                            wenn ich die Punkte aus allen auswärtsspielen haben will muss das doch heißen sp_gast_id = ms_id - dann habe ich da die punkte und die mit sp_tore_gast die erzielten tore bzw. dann mit sp_tore_heim die gegentore... vielleicht läuft da irgendwas schief... bin mir aber nicht sicher...

                            Comment


                            • #15
                              Also an der Sortierung liegt es nicht.
                              Das liegt an der Zählung.. nochmal ausprobieren.

                              Ich kann im Moment auch nur ausprobieren. So der Profi bin ich auch nicht. Aber ich häng mich mal dahinter.
                              [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
                              [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
                              [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

                              © Harald Schmidt

                              Comment

                              Working...
                              X