WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   SQL Problem - Doppelte Datensätze eliminieren (Abfrage) (http://www.wcm.at/forum/showthread.php?t=150140)

renew 11.11.2004 23:08

SQL Problem - Doppelte Datensätze eliminieren (Abfrage)
 
Folgende Problematik:

Ich muss nachträglich in einer Abfrage doppelte Datensätze eliminieren.

Das heißt ich hab evt. Datensätze die komplett gleich sind, bis auf ihren Primärschlüssel.

Mit einem einfachen Distinct funktioniert das leider nicht, da ich dann nur die eine Spalte erhalte.
Ich brauche aber den ganzen Datensatz inkl. der ID (die sich ja unterscheidet).

Das heißt die Abfrage soll einen kompletten Datensatz inkl. der ID aufnehmen, jedoch alle weiteren die genau gleich sind und sich nur in der ID unterscheiden nicht mehr.
Ich hoffe ihr verstehts wie ich das meine.... ;)

Kennt ihr da eine Lösung?
Die einzige andere Möglichkeit die ich sehe ist schon bei der Eingabe evt. doppelte abzufangen.
Jedoch ist das etwas "unbequem", da die Erfassungs-Anwendung schon im Einsatz ist und daher geändert werden müsste. Jedoch unvermeidbar wenn es keine andere Möglichkeit gibt.

Aber ich hoffe es gibt da etwas. ;)

Dank euch, lg renew

Potassium 11.11.2004 23:13

mh was is wenn du die anzahl der datensätze zählst die in einer spalte gleich sind und dann alle bis auf einen löschst?

JackLemon 11.11.2004 23:46

ganz einfach:

SELECT FIRST(id) AS idDesErstenDatensatzes, feld1, feld2, feld3 FROM meineTabelle GROUP BY feld1, feld2, feld3 ORDER BY irgendwas...;

das fasst die in der GROUP BY angeführten felder wie im DISTINCT statement zusammen, außer das id-feld, von dem wird mit der FIRST() funktion immer die id des ersten gefundenen datensatzes ausgegeben. kannst auch COUNT() (=anzahl der "gleichen" datensätze) oder andere aggregat-funktionen nehmen. wichtig: alle felder die in _keiner_ XYZ()-funktion stehen müssen immer in der GROUP BY klausel vorkommen - sonst gibt's klarerweise einen fehler.

renew 12.11.2004 10:43

@Potassium
Ist nich unbedingt gewünscht - vor allem da das ganze mit mehreren Benutzern unter Access laufen soll.

@JackLemon
Besten Dank!
Funkt 1A.
Ich hab zwar noch vergessen, dass es noch ein Datumsfeld gibt, welches auf unterschiedlich ist - aber das ist net so schlimm.
Das nehm ich einfach nicht in die eine Abfrage rein und hols mir nachher mit einem INNER JOIN aus der original Tabelle. (2. Abfrage)

Also nochmals danke, lg renew


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag