> Aus meiner Sicht muss ich erst angeben, wer an dem Tag mitspielt.
> Ausgehend davon muss eine Spielliste generiert werden von
> max. 6 Spielen (zu mehr langt das nicht mehr, bzw. vielleicht
> sollte man auch angeben können, wieviele Spiele generiert
> werden sollen)
> dann werden die Ergebnisse eingetragen (wenn halt nicht alle
> Spiele gespielt werden konnten, dann müssen die auf den
> Folgetag übernommen werden, daher die Angabe wieviele Spiele
> an einem Tag ausgelost werden sollen)
Übernehmen auf den Folgetag wird nicht immer gehen, da dann vielleicht nicht
wieder dieselben Leute spielen wollen.
Also Angabe der zu generierenden Spiele - sicherheitshalber mehr als man
spielen kann, z.B. 8 oder 10 und dann wird eine Seite zum Ausdrucken
generiert auf der man dann Eintragen kann wer mit wem gespielt hat und wie
das Ergebnis ist.
Beim Eingeben in den Rechner kann man dann noch eingeben welche der Spiele
wirlkich gespielt wurden und die anderen temporär generierten verwerfen.
Ggf. Noch mit der Möglichkeit selbst Spiele anzulegen, falls man ein Turnier
macht, wo man nach eigenem Schema die Spieler auf die Spiele verteielen will
> und dann natürlich die Gesamterangliste zusätzlich mit einer
> Übersicht, wer gegen wen überhaupt schon alles gespielt hat
> mit welchem Ergebnis
Ja.
Wenn man alle Spiele detailliert speichert, kann man sowohl Tagesrangliste,
Gesamtrangliste und JederGegenJeden-Rangliste erzeugen.
Tabellen:
Spieler(int ID, string Name)
TempSpiel(int ID, date datum,
int spieler1, int spieler2,
int spieler3 null, int spieler4 null)
Spiel(int ID, date datum, int spielerA1, int spielerA2 null,
int spielerB1, int spielerB2 null,
int diffGewonnen, int gewonnen, int torDiff)
diffGewonnen = [1 wenn gewonnen, -1 wenn verloren]
gewonnen = [1 wenn gewonnen, 0 wenn verloren]
torDiff = AnzahlGeschossenerTore - AnzahlKassierterTore
Wobei diese Zahlen von der Mannschaft A aus gesehen werden und umgerechnet
werden können falls man von der Manschaft B aus schaut:
diffGewonnenB = -diffGewonnen
gewonnenB = 1-gewonnen
torDiffB = -torDiff
Für die Rangliste muss man das beachten, da man mehrere Abfragen
zusammensummieren muss - je nachdem wo der Spieler gelistet wird.
Etwa so(ungetestet):
Select
id,
name,
sum(S1.diffGewonnen)+sum(S2.diffGewonnen)
+sum(-S3.diffGewonnen)+sum(-S4.diffGewonnen) as diffGewonnen,
sum(S1.gewonnen)+sum(S2.gewonnen)
+sum(1-S3.gewonnen)+sum(1-S4.gewonnen) as gewonnen,
sum(S1.torDiff)+sum(S2.torDiff)
+sum(-S3.torDiff)+sum(-S4.torDiff) as torDiff
from spieler S
Inner join Spiel S1 ON S.id=S1.spielerA1
Inner join Spiel S2 ON S.id=S2.spielerA2
Inner join Spiel S3 ON S.id=S3.spielerB1
Inner join Spiel S4 ON S.id=S4.spielerB2
Group by id, name
u.U. muss man noch alle sum(x) in ein isNull packen( isNull(sum(x),0) ),
damit Null-Ergebnisse nicht zu komplett-Null führen.
Dieses view muss man jetzt nur noch entsprechend sortieren:
Select * from Rangliste order by diffGewonnen desc, gewonnen desc, torDiff
desc
Die JederGegenJeden-Rangliste wird dann mindestens ähnlich komplex von der
Abfrage her, aber das spar ich mir hier erstmal...
> Das Thema scheint Dir Spass zu machen oder ? ;)
Wie kommst Du denn darauf? ;)
Claudius
_______________________________________________
Coffeehouse Mailingliste, Postings senden an:
[email protected]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/coffeehouse