Heim >Datenbank >MySQL-Tutorial >Wie rufe ich die Top-N-Datensätze für jeden Benutzer in Access SQL ab?

Wie rufe ich die Top-N-Datensätze für jeden Benutzer in Access SQL ab?

Linda Hamilton
Linda HamiltonOriginal
2025-01-07 17:32:41909Durchsuche

How to Retrieve the Top N Records for Each User in Access SQL?

Access SQL: Extrahieren der Top-N-Datensätze pro Benutzer

Diese Anleitung zeigt, wie Sie mit einer einzigen SQL-Abfrage die drei aktuellsten Datensätze für jeden Benutzer in einer Access-Datenbank abrufen. Für diese Aufgabe nutzen wir verschachtelte Abfragen.

Datenbankstruktur

Unsere Datenbank besteht aus zwei Tabellen:

  • Benutzertabelle: LoginID, Forename, Surname, DOB, Guardian Forename, Guardian Surname, Telephone Number
  • Fortschrittstabelle: ProgressID, LoginID, Score, Date Taken

Die Lösung: Verschachtelte Abfragen

Ein einfacher Ansatz mit TOP N innerhalb einer einzelnen Abfrage wird in Access SQL für diese spezielle Anforderung (Abrufen des obersten N für jede Gruppe) nicht direkt unterstützt. Stattdessen verwenden wir eine Unterabfrage, um dies zu erreichen:

Die innere Abfrage identifiziert die obersten drei Date Taken-Werte für jedes LoginID:

<code class="language-sql">SELECT TOP 3 PR2.[Date Taken]
FROM Progress AS PR2
WHERE PR2.LoginID = PR1.LoginID
ORDER BY PR2.[Date Taken] DESC</code>

Dieser Ergebnissatz wird dann in der IN-Klausel der äußeren Abfrage verwendet, um die Progress-Tabelle zu filtern:

<code class="language-sql">SELECT PR1.LoginID, PR1.Score, PR1.[Date Taken]
FROM Progress AS PR1
WHERE PR1.[Date Taken] IN (
    SELECT TOP 3 PR2.[Date Taken]
    FROM Progress AS PR2
    WHERE PR2.LoginID = PR1.LoginID
    ORDER BY PR2.[Date Taken] DESC
)
ORDER BY PR1.LoginID, PR1.[Date Taken] DESC;</code>

Diese letzte Abfrage gibt effizient die drei neuesten Datensätze für jedes LoginID zurück, sauber sortiert nach LoginID und dann nach Date Taken in absteigender Reihenfolge (der neueste zuerst). Dadurch werden die Einschränkungen der direkten Anwendung von TOP N auf gruppierte Daten in Access SQL umgangen.

Das obige ist der detaillierte Inhalt vonWie rufe ich die Top-N-Datensätze für jeden Benutzer in Access SQL ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn