Spieltabelle aus DB generieren

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

  • Spieltabelle aus DB generieren

    moin zusammen,

    ich habe eine problem mit der berechnung einer Tabelle.

    diese Tabelle soll die mannschaften anzeigen, mit punkten, spielen, sätzen usw..

    struktur der tabelle ist folgende:

    Feld Typ Null Standard
    ID int(11) Nein
    spieltag int(5) Nein 0
    heimteam int(10) Nein 0
    gastteam int(10) Nein 0
    heimpunkte int(5) Ja 0
    spiele_heim int(5) Ja 0
    gastpunkte int(5) Ja 0
    spiele_gast int(5) Ja 0
    datum date Ja 0000-00-00

    die int's heimteam, gastteam sind die team-ID's welche aus der tabelle "teams" geholt werden.

    tabelle "teams":

    ID int(11) Nein
    teamname varchar(255) Nein
    liga_id int(2) Nein 0
    passwort varchar(100) Nein
    session varchar(32) Ja NULL

    das problem ist, das für jedes eingetragene spiel eine spiel-id vergeben wird.

    daraus soll nun die tabelle generiert werden. und wie halt in jeder tabelle der mit den meisten punkten und spielen an erster stelle usw..

    mit 1ner abfrage bekomm ich es nicht hin, ich denke da muss was durch ein script berechnet werden, das schafft sql alleine nicht.

    beispiel:

    spiel id = 1
    heimteam = 1
    gastteam = 2
    heimpunkte = 2
    gastpunkte= 0
    spiele_heim = 10
    spiele_gast = 8
    ----------------------------
    spiel id = 2
    heimteam = 2
    gastteam = 1
    heimpunkte = 0
    gastpunkte = 2
    spiele_heim = 8
    spiele_gast = 10
    ----------------------------

    nun sollen alle punkte errechnet werden welches die team_id = 1 hat. an einem spieltag sind sie heimteam und am anderen gastteam.
    genau das ist mein problem.

    biher lös ich das über 2 tables, also die spieltabelle wird nicht über den table "spiele" generiert sondern bei jedem eingetragenem spiel noch was in eine andere tabelle geschrieben. aber ich möchte zur vereinfachung des script-ablaufes die Tabelle über spiele generieren, sofern das möglich wäre.

    ich hoffe mir kann jemand helfen

  • #2
    Ich nehme an du willst wissen wie die SQL Query ausschauen könnte. Richtig? Dann ist das wohl eher ein SQL Problem und kein PHP Problem
    **move** to SQL
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      ja wenn es nur mit einer SQL-abfrage funktionirt schon. ich glaube aber eher das ich dafür ein php-script verwenden muss, da MYSQL das alleine nicht rechnen kann, oder doch?

      Kommentar


      • #4
        ich glaube aber eher das ich dafür ein php-script verwenden muss, da MYSQL das alleine nicht rechnen kann, oder doch?
        Also MySql kann sehr wohl auch rechnen. Eine Übersicht über die Funktionen findest du hier
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          jepp, ich weiß das MySQL auch rechnen kann, habe auch in anderen scripts die funktionen ausgenutzt.
          im obrigen beispiel geht es mir nur darum das ich einfach nicht weiterkomme weil ja eben an einem spieltag die heimmannschaft ist und am anderen gastmannschaft. hier müssen die punkte also unterschiedlich addiert werden.

          Kommentar


          • #6
            Du machst dir mit deiner DB-Struktur das Leben selber schwer. Aber irgendwie geht es trotzdem, z.B. so:
            PHP-Code:
            $sql "SELECT
                        SUM(heimpunkte) + (
                            SELECT 
                                SUM(gastpunkte)
                            FROM
                                spiele
                            WHERE
                                gastteam = 1
                        )
                    FROM
                        spiele
                    WHERE
                        heimteam = 1"

            Gruss
            H2O

            Kommentar


            • #7
              das ist schon mal ein guter ansatz

              hauptproblem scheint hier wirklich die struktur zu sein.

              weil einmal kann ja ein team auch als gast-team punkte-plus machen, und am anderen mal als gast-team minus. das lässt sich so wahrscheinlich nicht rechnen, oder?

              wie würde denn die perfekte struktur dafür aussehen?

              Kommentar


              • #8
                Original geschrieben von maniac81
                weil einmal kann ja ein team auch als gast-team punkte-plus machen, und am anderen mal als gast-team minus.
                Von Minus-Punkten ist in deinem Beispiel auch nie die Rede. Aber grundsätzlich ist das in meiner Abfrage ja auch enthalten.
                Und um bei einer bessern Struktur zu helfen, habe ich definitiv zu wenig Informationen.
                Gruss
                H2O

                Kommentar


                • #9
                  ein spieltag wird so eingetragen:

                  heim_1 vs gast_2, punkte_heim : punkte_gast, sätze_heim : sätze_gast

                  heimteam ist immer die mannschaft welche das spiel einträgt. folglich ist einmal die team_id als heim und als gast zu finden in den verschiedenen spieltagen.

                  ein spiel wird entweder 2:0, 1:1 oder 0:2 gewertet, immer aus sicht des heimteams.

                  also der lösungsweg oben ist schon der richtige, es wird die richtige punktezahl angegeben. doch wie mach ich das dynamisch damit ich es in einer schleife ausgeben kann? dazu müssten noch die gegenpunkte errechnet werden wie zb.:

                  team 1: 15 pluspunkte, 10 gegenpunkte, differenz = +5

                  Kommentar


                  • #10
                    kann mir niemand weiterhelfen?

                    Kommentar


                    • #11
                      Ich verstehs halt immer noch nicht. Die Punkte werden doch einfach beim siegreichen Team eingetragen, egal ob Heim-oder Gastfrauschaft. Da gibts doch keine Minuspunkte und auch nichts zu berechnen. Und wenn du das in einer Schleife haben willst:
                      PHP-Code:
                      $sql "SELECT 
                                  s1.heimteam Team,
                                  SUM(heimpunkte) + (
                                      SELECT 
                                          SUM(s2.gastpunkte)
                                      FROM
                                          spiele s2
                                      WHERE
                                          s1.heimteam = s2.gastteam
                                  ) punkte
                              FROM
                                  spiele s1
                              GROUP BY
                                  s1.heimteam
                              ORDER BY
                                  punkte DESC"

                      Gruss
                      H2O

                      Kommentar


                      • #12
                        hmm, ich versuchs mal anders zu erklären.

                        spieltag 1:

                        team A vs team B, team A gewinnt und bekommt 2 punkte.

                        spieltag 2:

                        team C vs team A, team C gewinnt und bekommt 2 punkte.

                        nun hat team A 2:2 punkte

                        so sollte es dann ausgegeben werden. ich versuch auch schon die ganze zeit eine view zusammen zu basteln, aber ich bekomms nich gebacken.

                        Kommentar

                        Lädt...
                        X