Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Doppelte Datensätze ohne PK löschen (https://www.delphipraxis.net/96180-doppelte-datensaetze-ohne-pk-loeschen.html)

Jelly 19. Jul 2007 22:00

Datenbank: MSSQL • Version: 2000 • Zugriff über: ADO

Doppelte Datensätze ohne PK löschen
 
ich habe hier eine vermurkste DB vorliegen, die nun aber wirklich überhaupt keiner Normalisierungsnorm entspricht. Es gibt noch nicht mal Primary Keys oder sonstige Unique Constraints. Die DB an sich ist eine Kopie aus einem AS400 System und stammt aus den 70er.

Jedenfalls ist das Problem Folgendes:
Ich muss Dubletten ausfindig machen (soweit kein Problem) und eine davon löschen. Im Prinzip auch kein Problem, nur sind die Datensätze nicht eindeutig identifizierbar. Beispiel:

Code:
[b]Name,Funktion[/b]
Jelly,Moderator
Daniel,Chäffe,
Jelly,Moderator
Da SQL mengenorientiert ist, kann ich den DS "Jelly, Moderator" nicht eindeutig identifizieren. Ich kann also entweder nur beide Datensätze löschen mit
SQL-Code:
delete from tabelle where name='Jelly' and Funktion='Moderator'
oder eben keinen.

Wie kann ich jetzt vorgehen. Ich seh da keine Lösung :?:

mkinzler 19. Jul 2007 22:02

Re: Doppelte Datensätze ohne PK löschen
 
Erzeuge eine Zieltabelle und schiebe die DS dort hinein

Jelly 19. Jul 2007 22:04

Re: Doppelte Datensätze ohne PK löschen
 
Du meinst ein "Select into" Konstrukt mit einer Zusatzspalte in der Zieltabelle mit einem PK?
Das könnte gehen...

mkinzler 19. Jul 2007 22:05

Re: Doppelte Datensätze ohne PK löschen
 
Ja mit select distinct kannst du ja Dupletten ausschließen.

Jelly 19. Jul 2007 22:13

Re: Doppelte Datensätze ohne PK löschen
 
:thumb:
Distinct vereinfacht die Sache in der Tat... Merci.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 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