[PHP/MySQL] Aus Ergebnissen direkt Tabellen erstellen

Benutzer-621

abgemeldet
20 April 2006
744
64
Moin,
Wie kann ich am besten mit PHP/MySQL aus einer Tabelle nur mit Ergebnisse eine "richtige" Tabelle (Gesamt, Heim und Auswärts, Hin und Rückrunde) erstellen? Unten wäre ein Bsp. wie die MySQL-Tabelle aktuell aussieht. Dabei bedeutet liga, die Art der Liga (z.B. 1.Liga,2.Liga,Deutschland,Spanien), saison das Spieljahr (z.B. Saison 1, 2005, 2001/2002), spieltag und der Rest sollte dann schon erklärt sein. Das Problem wäre wie gruppiert man alle Spiele nach liga, saison und teilt bestimmten Teams dann bei dem Ergebnis (tore_heim u. tore_gast) die Punkte zu und sortiert richtig, wenns überhaupt möglich ist? Sorry, ist irgendwie net gescheit erklärt aber ich hoffe ihr versteht etwas davon :D.

MySQL-Tabelle:
id
liga
saison
spieltag
datum
team_heim
team_gast
tore_heim
tore_gast
 
Ich bin kein Fußballfan, also kann ich dir nur technische Hilfen geben ;)

INSERT INTO ... SELECT erlaubt dir das direkte Einfügen von Datensätzen in eine Tabelle aus dem Ergebnis einer Abfrage
 
Ich bin kein Fußballfan, also kann ich dir nur technische Hilfen geben ;)

INSERT INTO ... SELECT erlaubt dir das direkte Einfügen von Datensätzen in eine Tabelle aus dem Ergebnis einer Abfrage

:?:, einfügen möchte ich eigentlich gar Nichts. Ws soll aus Ergebnissen (die von den Spielen (tore_heim/gast)) eine Tabelle (bzw. Hin/Rück u. Heim/Auswärts) erstellt werden. Dabei soll der id (dem Team (team_heim/gast)) die Anzahl von 0,1,3 Punkten addiert werden, jenachdem wie das Spiel ausging. Bsp. Hier (https://www.fussballdaten.de/bundesliga/1970/kreuztabelle), ich habe nur die Ergebnisse , wie könnte ich daraus dann eine Tabellen erstellen?
 
:?:, einfügen möchte ich eigentlich gar Nichts.
Doch :p Die Ergebnisse in die Tabelle ;)
Aber wie mir scheint, hast du gar keine MySQL-Tabelle, sondern nur die auf dem Papier.

Ich hab mir deinen Link mal angesehen.
Die beste Datenstruktur wäre imo:
Tabelle 1 - `teams` - Mannschaften
ID INT(11) PRIMARY KEY
Name VARCHAR(24)
ShortName VARCHAR(4)

Tabelle 2 - `games` - Spiele
ID INT(11) PRIMARY KEY
Team INT(11) -> Fremdschlüssel Mannschaften
TeamOpponent INT(11) -> Fremdschlüssel Mannschaften
GoalsSelf TINYINT(2)
GoalsOpponent TINYINT(2)
Wie sich die Punkte berechnen, weiß ich leider nicht. Wie gesagt: Ich bin Informatiker, kein Fußballer ;)
 
Doch :p Die Ergebnisse in die Tabelle ;)
Aber wie mir scheint, hast du gar keine MySQL-Tabelle, sondern nur die auf dem Papier.

Ich hab mir deinen Link mal angesehen.
Die beste Datenstruktur wäre imo:
Tabelle 1 - `teams` - Mannschaften
ID INT(11) PRIMARY KEY
Name VARCHAR(24)
ShortName VARCHAR(4)

Tabelle 2 - `games` - Spiele
ID INT(11) PRIMARY KEY
Team INT(11) -> Fremdschlüssel Mannschaften
TeamOpponent INT(11) -> Fremdschlüssel Mannschaften
GoalsSelf TINYINT(2)
GoalsOpponent TINYINT(2)
Wie sich die Punkte berechnen, weiß ich leider nicht. Wie gesagt: Ich bin Informatiker, kein Fußballer ;)

Klar, sind ja schon paar eingetragen. Es muss aber irgendwie geprüft werden wer wieviel Punkte bekommt und die dann addiert werden. Ist tore_heim > tore_gast (3 Punkte team_heim, 0 team_gast), tore_heim < tore_gast (0 Punkte team_heim, 3 team_gast), tore_heim =(=) tore_gast (1 Punkt team_heim, 1 team_gast). Man muss' ja auch net mit Fußball machen, kann man ja auch andere Wettkampfarten benutzen.

Also, vllt. nochmal. Ich habe die Tabelle wie ganz oben, nun sollen z.B. alle Spiele aus Liga X und Saison Y ausgewählt werden und ne Tabelle erstellt werden, dabei muss rausgefunden werden ob team_heim oder team_gast mehr Tore hat, dabei werden dann ne bestimmte Anzahl von Punkten addiert und dann werden die Mannschaften nach Anzahl der Punkte absteigen sortiert.
 
Also, vllt. nochmal. Ich habe die Tabelle wie ganz oben, nun sollen z.B. alle Spiele aus Liga X und Saison Y ausgewählt werden und ne Tabelle erstellt werden, dabei muss rausgefunden werden ob team_heim oder team_gast mehr Tore hat, dabei werden dann ne bestimmte Anzahl von Punkten addiert und dann werden die Mannschaften nach Anzahl der Punkte absteigen sortiert.
Ok, hab den ganzen Thread nochmal gesehen :oops:

Zum Auswählen benutz diese Query:
Code:
[FONT=Courier New][B][COLOR=#9932cc]SELECT[/COLOR][/B] `team_heim`,`team_gast`,`tore_heim`,`tore_gast`
[B][COLOR=#9932cc]FROM[/COLOR][/B] `games`
[B][COLOR=#9932cc]WHERE[/COLOR][/B] `liga`=X [B][COLOR=#9932cc]AND[/COLOR][/B] `saison`=Y[/FONT]
(evtl. Ticks setzen, wenn `liga` oder `saison` Strings sind)

Jetzt gehst du her und gehst alle Spiele durch.
Dabei vergleichst du mit deinem Kritierium:
PHP:
if($row['tore_heim']>$row['tore_gast'])
  $score[$row['team_heim']]+=3;
elseif($row['tore_heim']<$row['tore_gast'])
  $score[$row['team_gast']]+=3;
else
{
  $score[$row['team_heim']]++;
  $score[$row['team_gast']]++;
}
Der Aufbau des $score-Arrays sollte damit klar sein: Schlüssel ist die TeamID, die aus der Abfrage kommt.

Wegen der Sortierung kannst du das Ganze am Ende fest in MySQL abspeichern, wenn du das Ergebnis immer brauchst (nehm ich an, weil sie Spiele nicht mehr ändern werden). Da kannst du dann MySQL für die Sortierung abkommandieren.
Ansonsten musst du mit den Array-Funktionen eine Sortierung machen.

Man könnte aber trotzdem nochmal überlegen, ob es nicht wirklich eine einzige Query für das ganze Vorhaben gibt, dann kannst du PHP ganz weglassen :think:
 
Man könnte aber trotzdem nochmal überlegen, ob es nicht wirklich eine einzige Query für das ganze Vorhaben gibt, dann kannst du PHP ganz weglassen :think:

Jo, so mein ichs ja, weil PHP soll ja eigentlich nur eingesetzt werden wenns net anders geht, die Tabelle sollte nicht abgespeichert werden, weil die Ergebnisse u.U. ändern sollen/können.