Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Abfrage der besten 3 in einer Tabelle

Begonnen von Rainy, Juni 21, 2013, 16:12:08

⏪ vorheriges - nächstes ⏩

Rainy

Hallo zusammen,

nach längerer Zeit muss ich nun an einer älteren Datenbank die ich mit Access 2003 erstellt habe, eine Änderung machen.
Die Datenbank wird für einen Volkslauf verwendet und muss nun erweitert werden.

In einer Abfrage werden Mannschaft, Läufer und Zeit angezeigt, diese Abfrage dient als Basis.

Nun benötige ich eine Abfrage für nachstehenden Modus:
Die besten 3 Zeiten einer Mannschaft ergeben eine gemeinsame Mannschaftszeit. Weniger wie 3 Läufer einer Mannschaft nehmen bei der Auswertung nicht teil (Also: Best 3)
Ausgabe als Bericht einer Mannschaftswertung.

Mein Problem liegt nun darin, dass ich diese Abfrage nicht hinbekomme. Hat jemand eine gute Idee ?

Viele Grüße

Rainy

ebs17

SELECT
    Mannschaft,
    Sum(Zeit) AS Zeitsumme
FROM
    (
        SELECT
            A.Mannschaft,
            A.Zeit
        FROM
            DeineAbfrage AS A
        WHERE
            A.ID IN
                (
                    SELECT TOP 3
                        B.ID
                    FROM
                        DeineAbfrage AS B
                    WHERE
                        B.Mannschaft = A.Mannschaft
                    ORDER BY
                        B.Zeit
                )
            ) AS X
GROUP BY
    Mannschaft


MfGA
ebs
Mit freundlichem Glück Auf!

Eberhard

Rainy

Hallo ebs,

erst einmal vielen Dank für den Tipp.
Ich habe die Abfrage bei mir eingeführt und die Werte von Deine Abfrage mit dem Abfragennamen ersetzt.

SELECT verein, Sum(Zeit) AS Zeitsumme
FROM [SELECT
            A.Verein,
            A.Zeit
        FROM
            BioTeam AS A
        WHERE
            A.ID IN
                (
                    SELECT TOP 3
                        B.ID
                    FROM
                        BioTeam AS B
                    WHERE
                        B.verein = A.verein
                    ORDER BY
                        B.Zeit
                )
            ]. AS X
GROUP BY verein;

Wenn ich nun die Abfrage starte erhalte ich ein Parameterwert-Feld für B.ID und A.ID. Was muss ich hier noch beachten und was hat A.ID und B.ID für eine Bedeutung ?

Danke im Voraus

Rainy

ebs17

Ein identifier (ID) kennzeichnet durch einen eindeutigen Wert den jeweiligen Datensatz. Hast Du so etwas nicht, ist
a) der bisherige Aufbau schon Murks und
b) wird dann eine Abfrage gleich deutlich umfangreicher oder eventuell nicht mehr erstellbar.

MfGA
ebs
Mit freundlichem Glück Auf!

Eberhard

Rainy

o.k. hab ich verstanden. Hatte bereits Identifikationsfeld angelegt. Nur nicht drangedacht dass ich das mitziehen muss.

Die Abfrage wird nun ausgeführt und berechnet die Gesamtzeit. Was allerdings nicht funktioniert ist das Kriterium, dass min. 3 Personen eine Mannschaft bilder müssen. Einzelläufer oder nur 2 Teilnehmer eines Vereins werden genauso in die Abfrage mit einbezogen.Kann man die Abfrage daraufhin erweitern dass nur Teilnehmer in der Liste auftauchen wo mindestens 3 Personen derselben Mannschaft gemeldet sind, oder muss ich diese Filterung bereits irgendwie im Vorfeld vornehmen?

Viele Grüße
Rainy

ebs17

...
GROUP BY verein
HAVING Count(verein) > 2;


Zitat... oder muss ich diese Filterung bereits irgendwie im Vorfeld vornehmen?

Diese Idee ist grundsätzlich hervorragend, weil Filtern weniger aufwändig ist als Joinen, Sortieren und Gruppieren/Aggregieren. Im konkreten Fall werden die Effekte bzgl. Performance aber nicht besonders sein, da zum Filtern nach Anzahlen auch eine Gruppierung nötig ist und zum anderen die Abfrage um einiges komplexer wird. Das wäre dann also ein Fall zum Ausprobieren, wenn man wegen wirklicher Performanceprobleme Varianten gegeneinander testen würde, um dann über Messungen zu ermitteln, was denn nun wirklich schneller ist.

MfGA
ebs
Mit freundlichem Glück Auf!

Eberhard

Rainy

Hallo,

Abfrage funktioniert perfekt! Es sind jetzt nicht so viele Daten, dass man den Eindruck hätte es wäre zu langsam. Wer schonmal mit Domsumme zu tun hatte weiss was langsam bedeuten kann.

Diese Abfrage ist perfekt - nochmals vielen Dank

Mfg

Rainy