PDA

Vollständige Version anzeigen : Löschabfragen mit Duplikate


Lynn
03.08.2001, 12:24
Hallo,
ich habe eine Tabellenerstellungsabfrage erstellt und will mit einer Anfügeabfrage zusätzliche Datensätze an diese Tabelle anfügen. Dabei treten Duplikate auf-wie kann ich diese aus der Tabelle löschen. Gibt es eine Möglichkeit die Datensätze aus der Duplikatsuche zu verwenden? Da sich die Datensätze nicht mit Kriterien wie Zwischen... eingrenzen lassen. Wäre nett wenn mir einer nen Tip geben könnte!
Lynn

Kurt aus Kienitz
03.08.2001, 13:34
Hallo Lynn,

Aus welcher Tabelle möchtest Du die Dublikate löschen ?
Aus der Source-Tabelle vor dem Anfügen oder aus der Ziel-Tabelle nach dem Anfügen ?

Woran erkennst Du die Dublikate, kannst Du evtl. einen Index so legen, daß die Dublikate erst ganicht in die Zieltabelle eingetragen werden ?

Kurt aus Kienitz
06.08.2001, 08:39
Hallo Lynn,

Ich kenne jetzt die Struktur Deiner Tabelle nicht, aber mal angenommen die sieht so aus:

Tabelle Buchungen:
AktDatum | MAName | Buchungsnummer | Betrag | HabenSoll
-----------+----------+----------------+---------+--------------
01.01.2001 | Schulze | 20010101-0001 | 12,50 | H
02.01.2001 | Schulze | 20010101-0002 | 23,50 | S
03.01.2001 | Müller | 20010101-0003 | 47,00 | S
02.01.2001 | Schulze | 20010101-0002 | 23,50 | S
03.01.2001 | Müller | 20010101-0003 | 47,00 | S

Wenn wir jetzt mal außer Acht lassen, daß die Buchungsnummer eindeutig ist und wir die doppelten nur über AktDatum, MAName, Betrag und HabenSoll ermitteln wollen, dann sollte das so aussehen:

SELECT *
FROM Buchungen A
WHERE EXISTS (SELECT *
FROM Buchungen B
WHERE B.AktDatum = A.AktDatum
AND B.MAName = A.MAName
AND B.Betrag = A.Betrag
AND B.HabenSoll = A.HabenSoll);

Um die Doppelten zu löschen dann so:

DELETE FROM Buchungen A
WHERE EXISTS (SELECT *
FROM Buchungen B
WHERE B.AktDatum = A.AktDatum
AND B.MAName = A.MAName
AND B.Betrag = A.Betrag
AND B.HabenSoll = A.HabenSoll);

Aber versuch erstmal das SELECT, man weiß ja nie :))