Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Bei doppeltem Eintrag, Record mit der höheren ID wählen (https://www.delphipraxis.net/148903-bei-doppeltem-eintrag-record-mit-der-hoeheren-id-waehlen.html)

bassman 10. Mär 2010 15:44

Datenbank: mySQL • Zugriff über: mySQLDac

Bei doppeltem Eintrag, Record mit der höheren ID wählen
 
Hallöchen an all SQL-Spezialisten

ich habe z.B. folgende Tabelle

ID, Name, Vorname, Nummer
10, Schmid, Peter, 1234
20, Meier, Hans, 0815
30, Meier, Hans, 0815
40, Meier, Franz, 4711
50, Meier, Franz, 4711

und möchte folgende Ausgabe erreichen
10, Schmid, Peter, 1234
30, Meier, Hans, 0815
50, Meier, Franz, 4711

d.h. wenn 2 gleiche Einträge vorhanden sind, soll der jeweils aktuellere mit der höheren ID ausgegeben werden.


Gruss, Jörn

DeddyH 10. Mär 2010 15:47

Re: Bei doppeltem Eintrag, Record mit der höheren ID wählen
 
Müsste das nicht so gehen?
SQL-Code:
SELECT ID, Name, Vorname, Nummer
FROM Tabelle A
WHERE ID = (
  SELECT MAX(ID)
  FROM Tabelle B
  WHERE B.Name = A.Name
  AND B.Vorname = A.Vorname
  AND B.Nummer = A.Nummer)
[edit] Sry, hatte die Nummer vergessen [/edit]

[edit2] Wobei eine einfache Gruppierung doch auch funktionieren müsste :gruebel:
SQL-Code:
SELECT MAX(ID), Name, Vorname, Nummer
FROM Tabelle
GROUP BY Name, Vorname, Nummer
[/edit2]

bassman 11. Mär 2010 14:23

Re: Bei doppeltem Eintrag, Record mit der höheren ID wählen
 
Leider nein :(

habe ja nur eine Tabelle. Auch mit Gruppierungen konnte ich keine Lösung finden.
Habe nun ein zusätzliches Feld in der Tabelle angelegt.

Trotzdem danke DeddyH

Gruss, Jörn

DeddyH 11. Mär 2010 14:35

Re: Bei doppeltem Eintrag, Record mit der höheren ID wählen
 
Das wundert mich aber schon ein wenig. Zumindest die umständliche 1. Variante sollte eigentlich funktionieren, wenn man beide Male den selben Tabellennamen einträgt.

Blup 11. Mär 2010 14:41

Re: Bei doppeltem Eintrag, Record mit der höheren ID wählen
 
SQL-Code:
select * from tabelle where id in
  (select max(id) from tabelle group by name, vorname, nummer)

p80286 12. Mär 2010 12:35

Re: Bei doppeltem Eintrag, Record mit der höheren ID wählen
 
Zitat:

Zitat von DeddyH
Wobei eine einfache Gruppierung doch auch funktionieren müsste :gruebel:
SQL-Code:
SELECT MAX(ID), Name, Vorname, Nummer
FROM Tabelle
GROUP BY Name, Vorname, Nummer

Das funktioniert auch!

Wenn nicht, dann wurden die Datenhosen nicht weit genug hinunter gelassen!

Gruß
K-H

edit:
Zitat:

habe ja nur eine Tabelle. Auch mit Gruppierungen konnte ich keine Lösung finden.
Habe nun ein zusätzliches Feld in der Tabelle angelegt.
in der ersten Lösung wurde auch nur eine Tabelle genutzt "Tabelle" aber mit zwei Aliassen "A" und "B"

bassman 12. Mär 2010 15:41

Re: Bei doppeltem Eintrag, Record mit der höheren ID wählen
 
Danke euch,

jetz hab auch ichs mit den Aliases kapiert ...

Habe nun DeddyH's Lösung umgesetzt.

SQL-Code:
SELECT ID, Name, Vorname, Nummer
FROM Tabelle A
WHERE ID = ( 
  SELECT MAX(ID)
  FROM Tabelle B
  WHERE B.Name = A.Name
  AND B.Vorname = A.Vorname
  AND B.Nummer = A.Nummer)
Gruss, Jörn


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz