-
doppelte Sätze löschen mit SQL
Hatte gehofft, dass deises Thema hier schon oft behandelt worden ist, habe aber nichts gefunden:
Kann man mit SQL doppelte Sätze aus einer datei löschen?
Die Entscheidung, ob der Satz doppelt vorhanden ist, soll dabei anhand eines bestimmten Feldes getroffen werden, nicht anhand des kompletten Satzinhaltes.
Mit Select sieht das so aus:
SELECT feldname, count(*) FROM datei GROUP BY feldname HAVING count(*) = 2
-> als Ergebnis bekomme ich jetzt alle doppelten Sätze (Feldinhalt von feldname ist gleich).
Ich möchte jetzt, dass bei diesen jeweils einer gelöscht wird.
Geht das mit SQL?
Danke
HS
-
gab des doch schon mal hier
drück mich
Habe ich aber nur über GOOGLE gefunden. über die suche hier, hat er es mir auch nicht ausgespuckt
tschau ronald
-
Hallo ronald,
komische Suchfunkton. Im Beitrag stand eindeutig "doppelt" !
Habs mal durchgelesen, der löst mein Problem aber nur zum Teil:
Ich kann mir damit zwar die doppelten Sätze anzeigen lassen, jedoch suchte ich ja nach einer Möglichkeit, doppelte zu löschen!
Jemand eine Idee?
Danke
HS
-
dann versuche es mal hier mit
PHP-Code:
delete from malz/artprgr a
where 1 <
(select count(*)
from malz/artprgr b
where a.netto = b.netto
and a.brutto = b.brutto
and a.mwst = b.mwst )
and rrn(a) >
(select min(rrn(a))
from malz/artprgr b
where a.netto = b.netto
and a.brutto = b.brutto
and a.mwst = b.mwst )
Im SQL bleibt der Satz mit der kleinsten Relativen Satznummer übrig.
tschau ronald
ps: ist ein sql was ich schon eingesetzt habe.
-
Hallo,
Antwort: Unter der Voraussetzung, dass die „doppelten„ Datensätze völlig identische Informationen enthalten, also nicht nur die Schlüsselfelder identisch sind, läßt sich die Aufgabe mit SQL schnell lösen. Angenommen, die zu bearbeitende Datei heißt DOPPELDAT. Dann erledigen ganze vier SQL-Anweisungen die Arbeit. Als Erstes erstellen Sie ein Dateiduplikat ohne Datensätze
Create Table DATDUP Like DOPPELDAT
Dann füllen Sie die Duplikatdatei mit den Datensätzen, wobei das SQL-Schlüsselwort DISTINCT doppelte Sätze ausläßt:
Insert Into DATDUP (Select Distinct * From DOPPELDAT)
Nun löschen Sie den Inhalt der Ursprungsdatei:
Delete From DOPPELDAT
und kopieren zu guter Letzt die Dateien der Arbeitsdatei zurück in die Originaldatei:
Insert Into DOPPELDAT (Select * From DATDUP)
Als letztes löschen Sie die Arbeitsdatei, falls Sie sie nicht mehr benötigen. Das können Sie dann per DLTF erledigen (sonst wären es ja 5 SQL-Anweisungen geworden ;-)
Auszug aus NewsWatch 04/2002...
Gruß Ralph
-
Das Problem hatten wir schon mal:
http://www.rlpforen.de/showthread.php?t=5984
Dort hats funktioniert !
-
Vielen Dank für die Tips.
Habe es mit dem SQL-Befehl von ronald hinbekommen.
Gruß
HS
-
naja,
habe das SQL in ähnlicher form auch bloß hier im forum gefunden
gruß ronald
Similar Threads
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
-
By Akku in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 10-05-06, 08:07
-
By Herbie in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 30-11-04, 10:46
-
By heynem in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 05-12-02, 08:59
-
By Schnichels in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 23-11-01, 12:54
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks