>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
gerade letzteres hatte ich bisher (glaube ich) vergessen, natürlich kann es jederzeit ausserhalb der Mittagspause weitere Spontanspiele geben. Da muss man natürlich weitere Spiele einfach hinzufügen können. [...] >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) ich nehme an, null weil es sein kann, dass nur ein 1:1 (seltenst 1:2/2:1) gespielt wird? >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 ich würde dennoch noch "AnzahlGeschossenerTore" und "AnzahlKassierterTore" separat aufnehmen, um auch einfach sehen zu können, an wievielen Toren einer beteiligt war bzw. im Team kassiert hat (kann man ja auch noch anzeigen oder auswerten - irgendwann ;) warum sparst Du hier an "verloren"? weil es aus "-gewonnen" hervorgeht? >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 richtig, gute Idee, wäre ich spontan gar nicht darauf gekommen, hätte ich mir im Excel etwas Arbeit sparen können *grummel* >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 grob überflogen stimme ich zu, wobei ich mir allerdings nicht sicher bin, was passiert, wenn ein Spieler nie in S2-S4 eingetragen wird. Da müsste der inner join doch ins leere laufen (schon lange keine SQL Abfrage mehr gemacht ;) >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. klar >Dieses view muss man jetzt nur noch entsprechend sortieren: > >Select * from Rangliste order by diffGewonnen desc, gewonnen >desc, torDiff >desc korrekt >> Das Thema scheint Dir Spass zu machen oder ? ;) > >Wie kommst Du denn darauf? ;) ach, kann ich mir auch nicht erklären ;) Gruß Dominik _______________________________________________ Coffeehouse Mailingliste, Postings senden an: [email protected] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/coffeehouse
