Office: (Office 2013) Abfrage schnellste Rennrunden

Helfe beim Thema Abfrage schnellste Rennrunden in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo Forum, nach jeder gefahrenen Runde werden bestimmte Indikatoren gespeichert (Beispiel: Spritverbrauch, Höchstgeschwindigkeit, ...), die ich in... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von 19Markus90, 19. Januar 2016.

  1. Abfrage schnellste Rennrunden


    Hallo Forum,

    nach jeder gefahrenen Runde werden bestimmte Indikatoren gespeichert (Beispiel: Spritverbrauch, Höchstgeschwindigkeit, ...), die ich in Access importiere und auswerten möchte.
    Meine Import-Tabelle sieht wie folgt aus:

    Strecke--------Fahrer--------Rundenzeit-------KPI1--------KPI2

    Strecke1-------Fahrer1--------112.231--------.....--------
    Strecke1-------Fahrer2--------111.234--------.....--------
    .....
    Strecke2-------Fahrer1--------142.313--------.....--------
    ....
    Strecke3-------Fahrer1--------153.234--------.....--------

    Ich möchte von jeder vorhandenen Rennstrecke für jeden Fahrer (können bis zu acht Fahrer sein) die schnellsten 10 Runden erhalten.
    Die anschließende Analyse soll auf der ersten Abfrage aufbauen: Alle KPIs, die in der Import-Tabelle sind, sollen aufgeführt werden, aber nur für die 10 schnellsten Runden des Fahrers auf dieser Strecke.
    Wie sieht hier eine sinnvolle Umsetzung aus?
    Vielen Dank für die Hilfe,
    Markus*Smilie

    :)
     
    19Markus90, 19. Januar 2016
    #1
  2. Sinnvoll ist es auf jeden Fall, den Datensätzen eine ID (z.B. per Autowert) zu gönnen. Das macht die Abfrage übersichtlicher bis überhaupt erst lösbar:
    Code:
     
  3. Hi Eberhard,

    danke, damit kann ich was anfangen *Smilie
    Jetzt kann es manchmal sein, dass im Feld der Rundenzeit kein Wert eingetragen ist. Das sollte natürlich nicht berücksichtigt werden. Wie kann ich das umgehen? Wenn ich das über HAVING (NOT) angehen möchte, kommt ein Fehler, dass es ohne Gruppierungsfunktion nicht möglich ist.

    Beste Grüße,
    Markus
     
    19Markus90, 21. Januar 2016
    #3
  4. Abfrage schnellste Rennrunden

    Filtern erfolgt ja auch über die WHERE-Klausel und somit vor einem möglichen Gruppieren.
    HAVING filtert nach dem Gruppieren (also muss ein Gruppieren erfolgen) und da werden sinnvollerweise nur Aggregate (Maxima, Summen, Durchschnitte) gefiltert.
    Code:
    Der hinzugefügte Ausdruck bietet gegenüber dem üblich angebotenen Ausdruck Rundenzeit Is NOT NULL die Möglichkeit einer Indexnutzung.
     
  5. Hallo Eberhard,

    ich habe deinen Code jetzt so angepasst:
    Code:
    Leider werden nicht die 10 schnellsten Runden dargestellt. Irgendwas passt mit dem Code nicht.
    Außerdem würde ich gerne die schnellsten 10 Runde für jede Session ausgegeben haben (jeweils die 10 schnellsten Runden von jedem Fahrer im Freien Training, im Qualifying und im Rennen).
    Kannst du mir da nochmal auf die Sprünge helfen?
    Außerdem würde ich gerne einen gleitenden Durchschnitt einführen. Das bedeutet, dass ich von jedem Fahrer für jeden Session die schnellste Runde, dann der Durchschnitt der zwei schnellsten Runden, dann der Durchschnitt der dreit schnellsten Runden usw. haben möchte. Wie kann ich das umsetzen?
    Danke und viele Grüße,
    Markus *Smilie
     
    19Markus90, 15. Februar 2016
    #5
  6. Die ORDER BY-Klausel ist in der TOP-X-Gestaltung funktional notwendig und gehört IN die Unterabfrage. Da es um schnelllste Runden geht, sollte dort die Rundenzeit das erste Sortierkriterium sein.

    Wenn Du die Hauptabfrage extra sortieren möchtest (für eine eigene Ansicht), wäre das eine zusätzliche Maßnahme.

    Zur zweiten Frage: TOP1, TOP2, TOP3 und darauf der Durchschnitt, das wären sehr viele Einzelabfragen. Unhandlich.
    Man könnte das auch mit zwei Abfragen lösen:
    1) laufende Nummer auf Rundenzeiten je Session a la Laufende Nummer/Summe in Abfragen
    2) im gleichen Sinne dann Durchschnitt aufgebaut auf dieser laufenden Nummer.
    Das sind aber intern recht aufwändige Gestaltungen, aufeinander aufgebaut um so mehr, so dass ich da ganz schnell erhebliche Performanceprobleme erwarten würde.

    Die Frage wäre ja, wie und wie lange das Ergebnis nachfolgend genutzt werden soll.
    Denkbar wäre:
    1) Die Tabelle in einer sehr geeigneten Sortierung zuzüglich zusätzlicher Felder zum nachträglichen Füllen in eine neue (Temp-)Tabelle schreiben.
    2) Die Temp-Tabelle in ein Recordset laden, dieses in einer einfachen Schleife zu durchlaufen und dabei mit Hilfe von Vergleichen und Zählern die Felder Rang und Durchschnitt auszurechnen und zu füllen.

    Nachteil: Es werden redundante Daten erzeugt => diese wären also bei einem laufenden Rennen (anteilig?) zu löschen und neu anzulegen zwecks korrekter Rechnungsgrundlagen und -ergebnisse.
    Vorteil: Es dürfte performant bleiben, auch bei 100k Datensätzen und mehr.

    Vielleicht sollte man das auch aufteilen in eine Gesamtbetrachtung (=> abgeschlossene Rennwochenenden, Daten bleiben statisch) und dem aktuellen Rennwochenende bzw. nur nach der aktuellen Session, wo es laufend Datenzuwächse gibt, aber da gerade die aktuelle Statistik interessiert.
    Man sollte also erst einmal in Gesamtabläufen und daraus abgeleiteten Notwendigkeiten (und Möglichkeiten) denken.

    Ich hoffe, ich denke in richtigen Zusammenhängen.

    Nebenbei sollte man definieren, wie man mit gleichen Zeiten umgeht, sprich es gibt drei gleiche beste Zeiten und man sucht den Datensatz mit der besten Zeit. Da benötigt man ggf. zusätzliche Kriterien für eine Reihenfolge.
    Für Durchschnitte wird das wohl keine Rolle spielen (glaube ich), aber wer weiß, was alles noch hinten angehängt wird.
     
  7. Hi Eberhard,

    erstmal vielen Dank für deine Hilfe *Smilie
    Habe den Code wie folgt geändert:
    Code:
    Leider werden dann keine Daten angezeigt? Und wie kann ich die schnellsten 10 Runden von jeder Session filtern? Aktuell werden nur die 10 schnellsten vom gesamten Event dargestellt.






    Es ist so geplant, dass nach jeder Session die Daten importiert werden. D.h. zum Beispiel beim freien Trainign 75 Runden von 3 Fahrern.
    Aus diesen Daten sollen die zehn besten Runden von jedem Fahrer gefiltert werden. Und aus diesen zehn schnellsten Runden soll der gleitende Durchschnitt der Rundenzeit ermittelt werden.
    Bedeutet also, dass die Daten statisch sind.
    Das sollte ich demnach mit einer zweiten Abfrage lösen?
     
    19Markus90, 15. Februar 2016
    #7
  8. Abfrage schnellste Rennrunden

    Die Daten einer Session fallen also einmalig im Stück an, sollen ausgewertet werden und werden in eine Gesamttabelle übertragen?
    Um wieviele Datensätze handelt es sich da im maximalen Fall?
     
  9. Ja, genau. Nach der Session werden die Daten reingeladen. Fallen also einmalig an.
    Maximale Datensätze? Ph, gute Frage. Bei einem 24h-Rennen maximal ca. 700 Datensätze.
     
    19Markus90, 15. Februar 2016
    #9
  10. In Anbetracht der niedrigen Datenmenge habe ich dann doch die Abfragelösung bevorzugt, siehe Anlage, qrySchnitt2 stellt Gesamtlösung dar
    - mit Parametern zur Eingrenzung auf Track und Session
    - mit Fremdschlüsseln (Zahlen) auf Track, Session und Driver.
     
  11. Hi Eberhard,

    DANKE! Das ist genau das, was ich gesucht habe *cool.gif*
    Darauf kann ich aufbauen. Jetzt muss ich die Tabelle nur noch irgendwie in diese Form bringen, damit ich eine PivotTabelle zur Auswertung verwenden kann:

    Driver------Option--------Laptime
    1----------Best----------67.765
    1----------Ø 2 Best------67.811
    1----------Ø 3 Best------68.01
    2----------Best----------67.72
    2----------Ø 2 Best ---67.793
    2----------Ø 3 Best------67.965
    3---------- Best----------67.544
    3---------- Ø 2 Best------67.636
    3----------Ø 3 Best------67.712


    Geht das auch über Access? Oder sollte ich das irgendwie nach Excel exportieren?

    Danke nochmal, das hilft mir alles ungemein!
     
    19Markus90, 16. Februar 2016
    #11
  12. Was Du erwartest, ist keine Pivottabelle.

    Die Daten kannst Du aus der Abfrage erhalten, wenn Du auf Rang < 4 filterst.
    Die Optionsbezeichnungen könnte man in einer zusätzlichen Tabelle führen und über den Rang hinzuverknüpfen.

    Pivottabelle (=> Kreuztabellenabfrage) geht natürlich auch.
     
  13. Abfrage schnellste Rennrunden

    Hi Eberhard,
    ein letztes Problem:
    Mein Frontend ist Excel und ich habe die Tabellen aus Access immer verknüpft. Da es sich bei deiner Abfrage um eine Kalkulation handelt, wird diese Abfrage nicht in Excel angezeigt. Wenn ich "andere Datenquellen" wähle, dauert die Verknüpfung extrem lange.
    Kann ich diese Kalkulation irgendwie anders verknüpfen? Oder in eine seperate Abfrage nur die "statischen" Werte eintragen?
     
    19Markus90, 16. Februar 2016
    #13
  14. Accesstabellen nach Excel verknüpft? Damit habe ich praktisch keine Erfahrungen. Wie genau erfolgt das?

    Ich habe dunkel in Erinnerung, dass man in Word auch Abfragen aus Access einbinden kann, aber die nur "sieht", wenn da keine Accessfunktionen, VBA-Funktionen oder Parameter eingebaut sind. Das könnte hier auch zutreffen.

    Es wäre eine Möglichkeit, das Datenholen per VBA zu steuern, und das natürlich auch aus einem Excelmakro heraus, etwa
    Code:
     
  15. Hi,

    in Excel: Daten-> Externe Daten abrufen -> Aus Access -> Datenbank auswählen -> verfügbare Tabellen werden angezeigt.
    Hier werden normalerweise alle Tabellen angezeigt, aber die Tabellen, die eine Kalkulation beinhalten, werden ausgeblendet.
    Die Idee mit dem Makro klingt gut. Daraus könnte ich dann meine Pivot-Tabelle erstellen. Ich werde micht heute Abend damit beschäftigen und Rückmeldung geben.
     
    19Markus90, 16. Februar 2016
    #15
Thema:

Abfrage schnellste Rennrunden

Die Seite wird geladen...
  1. Abfrage schnellste Rennrunden - Similar Threads - Abfrage schnellste Rennrunden

  2. Abfrage: Anzahl von Kriterium >0

    in Microsoft Access Hilfe
    Abfrage: Anzahl von Kriterium >0: Hallo, [ATTACH] Ich versuche gerade, die Anzahl der belegten Plätze auf einem LKW per Abfrage zu ermitteln. Dabei wäre dann FSPal > 0. Leider zeigt er mir die Anzahl der Plätze an. [ATTACH]...
  3. Teil des Zellinhaltes abfragen in VBA

    in Microsoft Excel Hilfe
    Teil des Zellinhaltes abfragen in VBA: Guten Tag, ich möchte in Zelle E1 den linken 4-stelligen Teil in Zelle A3 abfragen. Habs versucht mit IF (LEFT(R[2]C[-3],4) = "8396") then ... Else ... End If Wer kann...
  4. Verliert irgendwann die Selektive Abfrage von UFO

    in Microsoft Access Hilfe
    Verliert irgendwann die Selektive Abfrage von UFO: Guten Tag Ich habe ein HF mit darin befindlichem UF. Die Abfrage der Teilnehmer im Uf bezieht sich immer auf den Kurs-Typ im HF Solang ich das Formular neu erstelle, funktioniert das...
  5. automatische Abfrage URL via Artikelnummer

    in Microsoft Access Hilfe
    automatische Abfrage URL via Artikelnummer: Guten Tag Bei der Aktualisierung der Homepage und aufgrund eines Plugin-Wechsels des Üebersetzungstools hat wordpress alle Permalinks der Produkte verändert. Unserem Webmaster war nicht bekannt,...
  6. Vorkommen von Kunden in mehreren Tabellen per Abfrage filtern

    in Microsoft Access Hilfe
    Vorkommen von Kunden in mehreren Tabellen per Abfrage filtern: Hallo Community, ich habe folgendes Problem beim Nutzen einer Access-Datenbank. Zunächst die Datenstruktur: [ATTACH] Dies sind die Tabellen meiner Datenbank. In der Tabelle "Adressliste"...
  7. mit String aus Formular Übereinstimmung in Abfrage prüfen

    in Microsoft Access Hilfe
    mit String aus Formular Übereinstimmung in Abfrage prüfen: Hallo liebe Mitglieder Ich verzweifle wieder einmal fast und wende mich an Euch. Ich möchte gern aus einem Formular heraus (Click) prüfen, ob übereinstimmende Datensätze in einer Abfrage vorhanden...
  8. Schnell SQL-Ansicht für Abfrage öffnen

    in Microsoft Access Hilfe
    Schnell SQL-Ansicht für Abfrage öffnen: Hallo, ich verwende nur gelegentlich Access 2007 und würde gerne wissen wie ich schnell von einer Tabelle in die SQL-Ansicht einer Abfrage komme. Ich öffne beispielsweise eine mdb-Datei, weil...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden