Hallo liebe Leute,
ich brauche Eure Hilfe!
Ich habe eine Tabelle Person mit 4 Attributen: Name, Vorname, Geburtsdatum und Geburtsort.
Ich brauche eine SQL-Abfrage, die aus Tabelle Datensätze mit Namensvetter ( Name + Vorname ) löscht, aber lässt nur den jüngsten bleiben z.B.
Schmidt | Markus | 1960 | Hamburg
Mustermann | Dieter | 1970 | Berlin
Mustermann | Dieter | 1980 | München
Ergebnis
Schmidt | Markus | 1960 | Hamburg
Mustermann | Dieter | 1980 | München
Ich bedanke mich im Voraus für Eure Muhe
Gruß
Tanja
Homepage selbermachen 7.851 Themen, 35.611 Beiträge
Bei deinem Problem kommt es auf die Datenbank an. Arbeitest Du mit einer Datenbank, welche Subselects unterstützt, so ist es relativ einfach:
DELETE FROM [Tabellenname] WHERE Vorname=(SELECT Vorname FROM [Tabellenname] GROUP BY (Vorname, Nachname)) AND Nachname=(SELECT Nachname FROM [Tabellenname] GROUP BY (Vorname, Nachname)) AND Geburtsdatum!=(SELECT MIN(Geburtsdatum) AS Datum FROM [Tabellenname] GROUP BY (Vorname, Nachname))
Ich habe das Statement zwar nicht getestet, aber es könnte so gehen. Unterstützt deine Datenbank keine Subselects, so wie z.B. MySQL, so wird es komplizierter. Da müsste ich selbst etwas herumexperimentieren.
