SQL-Frage: Nur Zeilen mit aktuellen Werten ausgeben



  • Hi,

    ich habe eine relativ einfache Frage zu SQL. Angenommen ich habe folgende Datensätze in meiner DB:

    Name Vorname GbDatum Anzahl
    Donald Duck 10.11.1980 10
    Donald Duck 08.07.1987 45
    Mickey Mouse 12.05.1967 76
    Mickey Mouse 07.09.1988 55

    Wenn ein Vor- und ein Nachname doppelt in der DB sind, möchte ich diesen nur einmal ausgeben und zwar immer den Datensatz mit dem aktuelleren Geburtsdatum. Also hier müssten die Datensätze

    Donald Duck 08.07.1987 45
    Mickey Mouse 07.09.1988 55

    ausgegeben werden. Wie ist das per SQL am einfachsten zu realisieren?



  • Die Frage mag einfach sein, die Realisierung ist aber etwas schwieriger.

    Zum einen kannst du mittels "SELECT DISTINCT(spalte) FROM tabelle" alle doppelten Einträge eliminieren. Da du aber zwei Spalten hast, mußt du schauen, ob deine Datenbank dies unterstützt:
    Entweder "SELECT DISTINCT(spalte1, spalte2) FROM tabelle" oder "SELECT DISTINCT(spalte1), DISTINCT(spalte2) FROM tabelle". (Bin mir sicher, welche nun Standard ist).
    Das zweite Problem ist das akt. Datum (d.h. das ältere):
    du könntest dafür die Gruppierung mit der Funktion max() benutzen:
    "SELECT vorname, name, max(datum) FROM tabelle GROUP BY vorname, name".

    Evtl. reicht dies jetzt schon aus, ansonsten müßtest du eine Subquery verwenden, welche beide Selects miteinander verbindet:
    "SELECT * FROM tabelle WHERE spalte = SELECT spalte FROM tabelle ..."

    Auch hier mußt du die SQL-Hilfe zu deiner Datenbank wegen der Schreibweise befragen.

    Probieren geht über Studieren...


Anmelden zum Antworten