Vermeidung von Doppeleinträgen

  • Themenstarter Themenstarter Patryk Banasik
  • Beginndatum Beginndatum
P

Patryk Banasik

Hi,
ich versuche aus der Datenbank Einträge zu bekommen. Dabei gibt es Einträge die doppelt vorkommen. Ich brauche aber nur den letzten der vorkommt. Ich habe eine Tabelle mit dem Datum und der Seriennummer (die eben doppelt vorhanden ist). Wie könnte ich eine Abfrage vormulieren, um die Dopplungen zu vermeiden ?

Im Vorrus herzlichen Dank

Kurz zur Übersicht:

Seriennummer Vorgang Vorgandende
1001 1 2004-07-20 15:01
2004-07-20 15:01:17.000
1002 1 2004-07-20 15:01
1001 1 2004-07-20 15:02 (das wird bei der SN 1001
gebraucht)
 
Du kannst mit ORDER BY nach der Spalte sortieren, die für Dich "das Letzte" definiert evtl. mit DESC dahinter, um die Sortierung umzukehren, und dann mit LIMIT 0,1 auf den dann obersten/ersten Eintrag reduzieren.
 
Welche Datenbank ? Beachte bitte das die Datenbank dem Thema vorangestellt wird.
Je nach Datenbank gibt es klein und feine Unterschiede.

Die Lösung von meinem Vorgänger bezieht sich beispielsweise auf einen MySQL Server und unter Access oder MS SQL Server gibt es das Schlüsselwort "Limit" nicht.
Dort müsste man direkt hinter der SELECT Anweisung TOP AnzahlDatensätze angeben.
Beispiel:
SELECT TOP 1 feld1, feld2 FROM tabelle1 ORDER BY feld2
 
Zuletzt bearbeitet:
es gäbe noch eine weitere version mit distinct.
die wird meines erachtens von allen sql_versionen ab sql 92 unterstützt.

funktioniert so

SELECT DISTINCT(name_des_fields) FROM bla. usw.

ps. ich weiss nicht genau, wies mit dem datum steht, ob er einfach dann die neueste nimmt, oder nicht. wäre ein versuch mal rauszufinden, welches er dann nimmt.
 
DISTINCT hilft hier nicht, da ich nicht das letze Datum erhalte. Eine Möglichkeit wäre z.B. über ein Subselect:

Code:
SELECT s.* 
FROM   tabelle s,
    ( SELECT Seriennr, MAX( Vorgandende ) Vorgandende 
      FROM   tabelle 
      GROUP BY Seriennr) smax
WHERE  s.Seriennr= smax.Seriennr
AND    s.Vorgandende = smax.Vorgandende 
;
 
Zurück