0

automatische Rangliste

Ahoi zusammen,

in unserem Billardverein werden jährlich 4 Vereinsmeisterschaften in Turnierform ausgespielt (Disziplinen: 8-Ball, 9-Ball, 10-Ball und 14&1).

Hierzu bestehen drei Tabellen ("Player", "Chronik" und "VMs"). "Player" ist jeweils 1:N zu "VMs" und "Chronik" und verknüpft. "VMs" jeweils N:1 zu "Player" und "Chronik" verknüpft und ist zusätzlich in Komposition zu "Chronik". "Chronik" ist N:1 mit "Player" verknüpft.

In der Tabelle "Player" sind alle Spielernamen vermerkt. in der Tabelle "Chronik" sind die jeweiligen Vereinsmeisterschaften nach Disziplin angelegt. In der Tabelle "VMs" die Verknüpfungen zum Player und zur Chronik, sowie mittels eines Auswahlfeldes der Rang, den der Spieler bei der Vereinsmeisterschaft erzielt hat. Je nach Auswahl wird in einem Berechnungsfeld "Punkte" die Punktzahl ermittelt.

Nach diversen Vereinsmeisterschaften, verteilt über diverse Jahr, ergibt sich folgendes exemplarisches Gesamtbild der Spieler sortiert nach erzielten summierten Punkten:

Rang, Name, Punkte:
1) Paul 210
2) Peter 201
3) Hauke 194
3) Karl 194
3) Sven 194
6) Ralf 177
7) Hardy 169

Aufgabe:
Automatische Erstellung einer Rangliste gemäß der summierten Punkte. Dabei sollen Punktegleichstände den gleichen Rang (siehe obige Liste) erhalten!

Weiß jemand Rat?

Gruß
Tacho

4 Antworten

null
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Tacho,
    das Feld "Rand" als Berechnungsfeld. Die Formel:

    let AA := Punkte;
    let BB := Name;
    cnt(select VMs where Punkte > AA) + cnt(select VMs where Punkte = AA and Name <= BB)

    Das Feld sollte als Nummer bleiben, damit die Sortierung funktioniert. Wenn du die Klammer dahinter setzen möchtest, kannst du diese beim Zahlenformat als Einheit setzen
    • Tacho
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Ahoi Leo

    vielen Dank für Deine Hilfe!

    Leider klappte es nicht so richtig. Habe jetzt auf der Tabelle "Player" eine Berechnung hinzugefügt, die die Gesamtzahl des vom Spieler erziehlten Punkte anzeigt.

    Füge ich jetzt in der Spaltenansicht der Tabelle "Player" eine neue Spalte "Rangliste" hinzu mit angepasster Funktion:

    let AA := 'Ges.Pkte VM';
    let BB := Nachname;
    cnt(select Player where 'Ges.Pkte VM' > AA) + cnt(select Player where 'Ges.Pkte VM' = AA and Nachname <= BB)

    Dabei erstellt er mir eine Rangliste von 1 bis 90, was genau der Anzahl der unique Spielern entspricht, die über die Jahre teilgenommen haben.

    Leider werden punktgleiche Ergebnisse nicht mit dem selben Ranglistenplatz wiedergegeben.

    Hast Du eine Idee, warum?

    Gruß
    Tacho

    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo Tacho,

    da habe ich deine Frage nicht richtig gelesen und habe extra die Sortierung nach punkten und dann noch alphabetisch nach Nahmen. In deinem Fall wäre die Formel:

    ---

    let AA := 'Ges.Pkte VM';

    cnt(select Player where 'Ges.Pkte VM' < AA) + 1

    ---

    Grüße

    Leo

    • Tacho
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    glaub ehr, dass ich mich manchmal bissl umständlich ausdrücke ;-)

    Wenn man Deine letzte Formel verwendet, scheint das "<" ein ">" sein zu müssen.

    Damit funktioniert es dann prima, danke!

    Gruß
    Tacho

Content aside

  • vor 6 JahrenZuletzt aktiv
  • 4Antworten
  • 2044Ansichten