Guten Tag liebe Forumuser,
derzeit bastele ich an einem C# Programm welches die Tabellen im Fußball wider gibt und scheitere gerade bei der Formtabelle zumindest mit dem Sql Code. Die anderen Tabellen funktionieren, da ich mir alles in Variablen abgespeichert hab und später eben mit dem neuen Ergebnis addiere....
Gespeist werden die Tabellen aus der Begegnungstabelle oder Matchtable in welchem ich nur noch die Ergebnisse eintragen muss. Mit dem Update des Ergebnisses eines Spieles werden die Gesamt-, Heim- und Auswärtstabelle aktuallisiert, auch die Begegnungstabelle selbst erhält noch weitere Werte. Bei den Gesam-, Heim- und Auswärtstabellen lade ich mir die Werte aus der Datenbank in Variablen und speichere mit dem neuen Ergebniss wieder in der Datenbank ab. Ich weiß eigentlich umständlich, bin aber Neuling in der Materie und legte mir ein Buch zum Thema MySql zu, welches sich aber hauptsächlich mit PHP beschäftigt und nur wenige Seiten für meine Belange zu gebrauchen sind, eher Fehlkauf.
Die Formtabelle gibt die letzten 5 Spiele wider, die daraus erzielten Punkte, Tore, Gegentore und Billanz einer Mannschaft. Aus der Vergangenheit brauche ich aber nur 4 Spiele, denn wenn ich ein Ergebniss für 2 Mannschaften eintrage habe ich ja wieder 5 Spiele. Es sollen insgesamt immer nur 5 Spiele für jedes Team auf der Formtabelle stehen. 4 aus der Datenbank(Begegnungstabelle) + neuestes Spielergebnis.
Um es mir zu erleichtern hatte ich mir einen Code gebastellt, der mit dem eintragen des Spielergebniss auch gleich die Punkte für beide Teams, die Tore und Gegentore, sowie die Tordifferenz oder billanz für jede Mannschaft abspeichert in Form von Heimteam und Gastteam.
Begegnungstabelle besteht aus Spalten:
Spieltag, Datum, Heimmannschaft, HeimTore, GastTore, Gastmannschaft, Punkte_Heim, Punkte_Gast, Diff_Heim, Diff_Gast, Sieger
Im Hauptprogramm muss ich später nur noch die Tore eintragen, die anderen Felder werden automatisch ausgefüllt.
Die Formtabelle hatte ich versucht so zu erstellen, bzw. aktuell zu halten, in dem ich die 4 letzten Spiele der Heimmannschaft und der Gastmannschaft auslese.
Im Select Befehl sage ich einfache WHERE Heimteam="" dabei gruppert es doch richtig und ich summiere die einzelnen Felder welche zum Heimteam gehören. Aus 4 Spielen ist klar eine Mannschaft hat 2* zu Hause gespielt und zwei mal Auswärts.
So brauche ich hierzu:
(SELECT SUM(Punkte_Heim) FROM Begegnung WHERE Heimteam="Bayern(Bspw.)" AND Spieltag BETWEEN 16 AND 19)+
(SELECT SUM(Punkte_Gast) FROM Begegnung WHERE Gasteam="Bayern(Bspw.)" AND Spieltag BETWEEN 16 AND 19)+
aktuelles Ergebnis
In der Workbench von MySql tut das so und liefert auch die richtige Abfrage zurück. Ich hatte nun beide Select in Klammer geschrieben, doch will ich dies ja mit Update und Set.
Also Update Formtabelle Set Punkte=(
(SELECT SUM(Punkte_Heim) FROM Begegnung WHERE Heimteam="Bayern(Bspw.)" AND Spieltag BETWEEN 16 AND 19)+
(SELECT SUM(Punkte_Gast) FROM Begegnung WHERE Gasteam="Bayern(Bspw.)" AND Spieltag BETWEEN 16 AND 19)+3)
So tut das in der Workbench, aber mit C# nicht, bzw. ich will ja gleich alle Spalten aktuallisieren, also langer Code.
Weiß aber nun nicht wieso. Oder weiß jeman einen geschickteren Weg?
Würde jetzt gerne den Code reinsetzten, aber muss kurz auf den Server aufschalten...
derzeit bastele ich an einem C# Programm welches die Tabellen im Fußball wider gibt und scheitere gerade bei der Formtabelle zumindest mit dem Sql Code. Die anderen Tabellen funktionieren, da ich mir alles in Variablen abgespeichert hab und später eben mit dem neuen Ergebnis addiere....
Gespeist werden die Tabellen aus der Begegnungstabelle oder Matchtable in welchem ich nur noch die Ergebnisse eintragen muss. Mit dem Update des Ergebnisses eines Spieles werden die Gesamt-, Heim- und Auswärtstabelle aktuallisiert, auch die Begegnungstabelle selbst erhält noch weitere Werte. Bei den Gesam-, Heim- und Auswärtstabellen lade ich mir die Werte aus der Datenbank in Variablen und speichere mit dem neuen Ergebniss wieder in der Datenbank ab. Ich weiß eigentlich umständlich, bin aber Neuling in der Materie und legte mir ein Buch zum Thema MySql zu, welches sich aber hauptsächlich mit PHP beschäftigt und nur wenige Seiten für meine Belange zu gebrauchen sind, eher Fehlkauf.
Die Formtabelle gibt die letzten 5 Spiele wider, die daraus erzielten Punkte, Tore, Gegentore und Billanz einer Mannschaft. Aus der Vergangenheit brauche ich aber nur 4 Spiele, denn wenn ich ein Ergebniss für 2 Mannschaften eintrage habe ich ja wieder 5 Spiele. Es sollen insgesamt immer nur 5 Spiele für jedes Team auf der Formtabelle stehen. 4 aus der Datenbank(Begegnungstabelle) + neuestes Spielergebnis.
Um es mir zu erleichtern hatte ich mir einen Code gebastellt, der mit dem eintragen des Spielergebniss auch gleich die Punkte für beide Teams, die Tore und Gegentore, sowie die Tordifferenz oder billanz für jede Mannschaft abspeichert in Form von Heimteam und Gastteam.
Begegnungstabelle besteht aus Spalten:
Spieltag, Datum, Heimmannschaft, HeimTore, GastTore, Gastmannschaft, Punkte_Heim, Punkte_Gast, Diff_Heim, Diff_Gast, Sieger
Im Hauptprogramm muss ich später nur noch die Tore eintragen, die anderen Felder werden automatisch ausgefüllt.
Die Formtabelle hatte ich versucht so zu erstellen, bzw. aktuell zu halten, in dem ich die 4 letzten Spiele der Heimmannschaft und der Gastmannschaft auslese.
Im Select Befehl sage ich einfache WHERE Heimteam="" dabei gruppert es doch richtig und ich summiere die einzelnen Felder welche zum Heimteam gehören. Aus 4 Spielen ist klar eine Mannschaft hat 2* zu Hause gespielt und zwei mal Auswärts.
So brauche ich hierzu:
(SELECT SUM(Punkte_Heim) FROM Begegnung WHERE Heimteam="Bayern(Bspw.)" AND Spieltag BETWEEN 16 AND 19)+
(SELECT SUM(Punkte_Gast) FROM Begegnung WHERE Gasteam="Bayern(Bspw.)" AND Spieltag BETWEEN 16 AND 19)+
aktuelles Ergebnis
In der Workbench von MySql tut das so und liefert auch die richtige Abfrage zurück. Ich hatte nun beide Select in Klammer geschrieben, doch will ich dies ja mit Update und Set.
Also Update Formtabelle Set Punkte=(
(SELECT SUM(Punkte_Heim) FROM Begegnung WHERE Heimteam="Bayern(Bspw.)" AND Spieltag BETWEEN 16 AND 19)+
(SELECT SUM(Punkte_Gast) FROM Begegnung WHERE Gasteam="Bayern(Bspw.)" AND Spieltag BETWEEN 16 AND 19)+3)
So tut das in der Workbench, aber mit C# nicht, bzw. ich will ja gleich alle Spalten aktuallisieren, also langer Code.
Weiß aber nun nicht wieso. Oder weiß jeman einen geschickteren Weg?
Würde jetzt gerne den Code reinsetzten, aber muss kurz auf den Server aufschalten...