Mira: Nur neueste Datensätze finden

Beitrag lesen

Guten Tag.

In einer (beispielhaften) Tabelle wird die Anwesenheit von Personen protokolliert. Da manche Personen ihren Personalausweis nicht bei sich tragen, werden Personen neben der Personalausweisnummer auch über ihren Vor- und Nachnamen identifiziert.

Der Eintrag zu einer Person soll dann als identische Person gelten, falls entweder die Ausweisnummer identisch ist oder es keine Ausweisnummer gibt, aber Vor- und Nachname identisch sind.

Die Anwesenheiten einer beliebigen Person bekomme ich mit

select vorname, nachname, ausweis, zeitpunkt from tabelle 
where 
   (ausweis is not null and ausweis = %s) 
   or (vorname = %s and nachname = %s)

Es kann vorkommen, dass diese Abfrage mehrere Personen liefert. Insbesondere soll keine Beachtung finden, dass die Tabelle mehrere Personen als eine Identität liefert oder mehrere Identitäten für eine Person gespeichert sind.

Frage: Wie bekomme ich die Datensätze (Ausweis, Namen, Zeitpunkt) der jeweils letzten Anwesenheit aller Personen, die diese Abfrage liefert?

Im Einsatz ist MariaDB, eine allgemeine Lösung wäre mir jedoch lieber.