WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 23.04.2004, 21:49   #1
Loco
Senior Member
 
Registriert seit: 03.09.2003
Beiträge: 161


Frage Access: Summe der 3 besten Ergebnisse...

Ich habe folgendes Problem:

Bei der Auswertung von Bewerben (Sportschießen) gibt es eine Mannschaftswertung. Jede Mannschaft besteht aus 5 Mann, die Punktzahl der Mannschaft ergibt sich jedoch aus der Summe der drei besten Schützen.

In einer Tabelle habe ich die Felder:
Name - ist klar
Mannschaftsname – ist auch klar
S1
S2
...
S10 – der 1 bis 10 Einzelschuß des Schützen, enthält den Wert 0 bis 10
SG – Summe von S1 bis S10 also die Gesamtpunktzahl (wird bei der Eingabe von S1 bis S10 erzeugt). Der Schütze hat also 0 bis 100 Punkte

Wie schaffe ich nun eine Mannschaftswertung?
Ich habe es geschafft, einen Bericht zu erstellen, der die Schützen gruppiert nach Mannschaft anzeigt und die Punkte ALLER Schützen werden addiert. Das wäre ja der richtige Weg. Aber wie schaffe ich es, PRO MANNSCHAFT NUR DIE 3 SCHÜTZEN MIT DER HÖCHSTEN PUNKTEZAHL ZU NEHMEN, also die schlechteren zwei zu ignorieren....
Loco ist offline   Mit Zitat antworten
Alt 23.04.2004, 23:02   #2
Jaguar
Classic Car Driver
 
Benutzerbild von Jaguar
 
Registriert seit: 16.02.2000
Ort: Wien
Beiträge: 569

Mein Computer

Standard

Welche Access Version? Sollte es eine halbwegs neue sein solltest du für SQL auch die TOP n Funktion haben. In deinem Fall wäre das dann ein Select der TOP 3 pro Mannschaft.
Jaguar ist offline   Mit Zitat antworten
Alt 23.04.2004, 23:22   #3
Loco
Senior Member
 
Registriert seit: 03.09.2003
Beiträge: 161


Standard

Access 2002

Welches Format hat so eine TOP n Anweisung?
Loco ist offline   Mit Zitat antworten
Alt 23.04.2004, 23:31   #4
Jaguar
Classic Car Driver
 
Benutzerbild von Jaguar
 
Registriert seit: 16.02.2000
Ort: Wien
Beiträge: 569

Mein Computer

Standard

Wie hieß es bei mir immer so schön im Informatikunterricht: "Die Hilfe ist rechts oben" .
Hättest du dir mal die Access Hilfe etwas genauer zu dem Thema angesehen hättest du sowas in der Art gefunden:

TOP n [PERCENT] Gibt eine bestimmte Anzahl von Datensätzen zurück, die im durch eine ORDER BY-Klausel angegebenen oberen oder unteren Bereich liegen. Angenommen, Sie möchten die Namen der besten 25 Schüler des Jahrgangs 1994 zurückgeben:

SELECT TOP 25
Vorname, Nachname
FROM Schüler
WHERE Schulabschlussjahr = 1994
ORDER BY Abschlussgesamtnote DESC;

Wenn Sie die ORDER BY-Klausel nicht verwenden, gibt die Abfrage willkürlich 25 Datensätze, die die WHERE-Klausel erfüllen, aus der Tabelle Schüler zurück.

Das TOP-Prädikat wählt nicht zwischen identischen Werten. Wenn im vorherigen Beispiel die 25. und 26. beste Abschlussgesamtnote identisch sind, gibt die Abfrage 26 Datensätze zurück.

Sie können aber auch mit dem reservierten Wort PERCENT einen bestimmten Prozentsatz von Datensätzen zurückgeben, die im durch eine ORDER BY-Klausel angegebenen oberen oder unteren Bereich liegen. Angenommen, Sie möchten statt den besten 25 Schülern die schlechtesten 10 % der Schüler des Jahrgangs zurückgeben:

SELECT TOP 10 PERCENT
Vorname, Nachname
FROM Schüler
WHERE Schulabschlussjahr = 1994
ORDER BY Abschlussgesamtnote ASC;

Mit dem ASC-Prädikat werden die unteren Werte zurückgegeben. Nach der TOP-Anweisung muss eine ganze Zahl ohne Vorzeichen folgen.

TOP hat keine Auswirkung darauf, ob die Abfrage aktualisiert werden kann.
Jaguar ist offline   Mit Zitat antworten
Alt 24.04.2004, 06:00   #5
Loco
Senior Member
 
Registriert seit: 03.09.2003
Beiträge: 161


Standard

Das ist nicht ganz die Lösung....

Zitat:
Angenommen, Sie möchten die Namen der besten 25 Schüler des Jahrgangs 1994 zurückgeben:
Was ich brauche, sind die besten Schüler/Sportler JEDES Jahrganges...

Zitat:
Das TOP-Prädikat wählt nicht zwischen identischen Werten
Das ist ein großes Problem... Wenn der 4. genauso viele Punkte wie der 3. hat, dann werden 4 statt in 3 in die Wertung genommen
Loco ist offline   Mit Zitat antworten
Alt 24.04.2004, 09:57   #6
Jaguar
Classic Car Driver
 
Benutzerbild von Jaguar
 
Registriert seit: 16.02.2000
Ort: Wien
Beiträge: 569

Mein Computer

Standard

Zitat:
Original geschrieben von Loco
Das ist nicht ganz die Lösung....


Was ich brauche, sind die besten Schüler/Sportler JEDES Jahrganges...
.. dann gruppier halt danach von der auswertung.

Zitat:

Das ist ein großes Problem... Wenn der 4. genauso viele Punkte wie der 3. hat, dann werden 4 statt in 3 in die Wertung genommen
.. für diesen fall gibts das prozent. du hast doch immer 5 hast du geschrieben in einer mannschaft? dann nimm immer die top 3/5 prozent.
Jaguar ist offline   Mit Zitat antworten
Alt 24.04.2004, 13:39   #7
Loco
Senior Member
 
Registriert seit: 03.09.2003
Beiträge: 161


Standard

Zitat:
Original geschrieben von Jaguar
.. dann gruppier halt danach von der auswertung.


.. für diesen fall gibts das prozent. du hast doch immer 5 hast du geschrieben in einer mannschaft? dann nimm immer die top 3/5 prozent.
TOP 3/5% nimmt aber immer die oberen 3/5% der Werte.

Wenn also Team A: 12,11,12,9,7 Punkte hat und Team B: 19,18,17,16,15, dann berücksichtigt TOP zuviele Werte von Team B, die sie höher sind als die von Team A.

Der Bericht sollte ergeben:
Platz 1: Team B 19+18+17 Punkte
Platz 2: Team A 12+12+11 Punkte

Ich kriege das einfach nicht hin....
Loco ist offline   Mit Zitat antworten
Alt 24.04.2004, 18:20   #8
Jaguar
Classic Car Driver
 
Benutzerbild von Jaguar
 
Registriert seit: 16.02.2000
Ort: Wien
Beiträge: 569

Mein Computer

Standard

ich kann mich nur wiederholen:

a.) GRUPPIEREN NACH den einzelnen TEAMS (wenn du ne Topauswertung über alle machst kann ja nix vernünftiges rauskommen)

b.) top PRO team

c.) davon die summe

d.) die summe der einzelnen teams abfragen und sortieren...
Jaguar ist offline   Mit Zitat antworten
Alt 30.04.2004, 13:54   #9
Shadow
Master
 
Registriert seit: 19.04.2000
Beiträge: 541


Standard

Hatte auch schon ein ähnliches Problem.
Die TOP-Funktion ist in so einem Fall unbrauchbar (gibt es eigentlich einen Fall, wo sie nicht unbrauchbar ist? ), da bei einem Gleichstand zwischen dem 3. und 4. Teilnehmer die Funktion TOP 3 ein Ergebnis von 4 Datensätzen liefert, was bei einer Summenberechnung der Punktezahl fatal wäre.

Um in meiner Datenbank schnell auf die TOP Datensätze zugreifen zu können werden sie mittels VBA in einem speziellen Feld markiert (das Programm läuft nach der Eingabe/Aktualisierung eines Datensatzes automatisch los und markiert die "ECHTEN" TOP 3 welche für spätere Abfragen/Berechnungen gebraucht werden.

Oder du schreibst dir eine spezielle Summenfunktion, die du im Bericht für jede Mannschaft aufrufst... so zum Beispiel:

Function SummeTop3(Mannschaft As String) As Integer
Dim rs As Recordset, x As Integer, Su As Integer
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Tabelle1 WHERE Mannschaftsname='" & Mannschaft & "' ORDER BY [SG] DESC;")
x = 1
Su = 0
rs.MoveFirst
While (Not rs.EOF) And x < 4
Su = Su + rs!SG
x = x + 1
rs.MoveNext
Wend
rs.Close
SummeTop3 = Su
End Function
Shadow ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:02 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag