WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 11.11.2004, 23:08   #1
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard 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
renew ist offline   Mit Zitat antworten
Alt 11.11.2004, 23:13   #2
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Standard

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?
Potassium ist offline   Mit Zitat antworten
Alt 11.11.2004, 23:46   #3
JackLemon
Senior Member
 
Registriert seit: 02.11.2002
Beiträge: 179


Standard

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.
____________________________________
It\'s not a bug... It\'s a feature!

You know, the main advantage of encrypted paella over ordinary paella is that nobody but you knows what you are eating... (Alvaro)
JackLemon ist offline   Mit Zitat antworten
Alt 12.11.2004, 10:43   #4
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

@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
renew ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:18 Uhr.


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