Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Mina am Januar 04, 2018, 10:08:34

Titel: Doppelte Einträge löschen
Beitrag von: Mina am Januar 04, 2018, 10:08:34
Hallo Forum,

wer kann mir weiterhelfen?
Ich möchte in einer Tabelle alle doppelten Einträge löschen und zwar die in den Feldern
PATISTAMMNR EINKURZ LABEINDAT ERGEBNIST2 und ERGEBNIST1 dieselben Einträge aufweisen.

Ich habe es mit einer SQL Anweisung versucht
DELETE FROM Su_Resultate1
         WHERE 
                         PATISTAMMNR = PATISTAMMNR AND
                         EINSKURZ = EINSKURZ AND
                         LABEINDAT = LABEINDAT AND
                         ERGEBNIST2 = ERGEBNIST2 AND
                         ERGEBNIST1 = ERGEBNIST1

Diese Anweisung funktioniert nicht er löscht fast alle Datensätze.

Ich möchte jedoch, dass ein Datensatz stehen bleibt je PATISTAMMNR

Was mache ich falsch???


Danke

Mina
Titel: Re: Doppelte Einträge löschen
Beitrag von: Lachtaube am Januar 04, 2018, 10:33:24
Wenn die Tabelle zumindest noch ein weiteres Feld bzw. Feldkombination zur Unterscheidung aufweist (idealerweise ein Primärschlüssel; manchmal reicht auch ein Timestamp), könnte man per Definition den höchsten oder niedrigsten Wert aus diesem Feld bzw. dieser Feldkombination bestehen lassen.

Das Prinzip wird in Roger's Access Library unter RemoveDuplicates.mdb (http://www.rogersaccesslibrary.com/forum/topic285.html) erklärt.
Titel: Re: Doppelte Einträge löschen
Beitrag von: Mina am Januar 04, 2018, 10:41:04
Hallo,

Danke für die schnelle Antwort
Es ist eine ID vorhanden (Auto Wert)

Gruß
Mina
Titel: Re: Doppelte Einträge löschen
Beitrag von: DF6GL am Januar 04, 2018, 10:46:19
Hallo Mina,


benutze den "Abfrage-Assistenten zur Duplikatssuche" und lösche darin die Doppelten DS händisch ..

oder

Delete from Su_Resultate1 where id in
        (select t2.id from Su_Resultate1  t1 inner join  Su_Resultate1 t2 on t1.id>t2.id
          where t1 PATISTAMMNR = t2.PATISTAMMNR 
          and t1.EINSKURZ = t2.EINSKURZ
          and t1.LABEINDAT = t2.LABEINDAT
          and t1.ERGEBNIST2 = t2.ERGEBNIST2
          and t1.ERGEBNIST1 = t2.ERGEBNIST1)
Titel: Re: Doppelte Einträge löschen
Beitrag von: Mina am Januar 04, 2018, 10:58:14
Hallo,
ich die SQL Anweisung in eine Abfrage eingefügt.
und bekomme bei der Ausführung folgende
Fehlermeldung
Syntaxfehler in Abfrageausdruck id in
select t2.id from Su_Resultate1  t1 inner join  Su_Resultate1 t2 on t1.id>t2.id
          where t1 PATISTAMMNR = t2.PATISTAMMNR
          and t1.EINSKURZ = t2.EINSKURZ
          and t1.LABEINDAT = t2.LABEINDAT
          and t1.ERGEBNIST2 = t2.ERGEBNIST2
          and t1.ERGEBNIST1 = t2.ERGEBNIST1)

Die manuelle Lösung habe ich verworfen, da es sich um ca. 36.000 Datensätze handelt. Puh!!

Gruß
Mina
Titel: Re: Doppelte Einträge löschen
Beitrag von: DF6GL am Januar 04, 2018, 11:12:32
Hallo,

die öffnende Klammer vor "select"  fehlt.
Titel: Re: Doppelte Einträge löschen
Beitrag von: ebs17 am Januar 04, 2018, 11:20:38
oder so:
DELETE
FROM
   Su_Resultate1 AS t1
WHERE
   EXISTS
      (
         SELECT
            NULL
         FROM
            Su_Resultate1 AS t2
         WHERE
            t1.id > t2.id
               AND
            t1.PATISTAMMNR = t2.PATISTAMMNR
               AND
            t1.EINSKURZ = t2.EINSKURZ
               AND
            t1.LABEINDAT = t2.LABEINDAT
               AND
            t1.ERGEBNIST2 = t2.ERGEBNIST2
               AND
            t1.ERGEBNIST1 = t2.ERGEBNIST1
      )
Titel: Re: Doppelte Einträge löschen
Beitrag von: Mina am Januar 04, 2018, 11:21:51
Hallo,

habe den fehler gefunden.
Es fehlte dieser Punkt in der Anweisung
Delete from Su_Resultate1 where id in
        (select t2.id from Su_Resultate1  t1 inner join  Su_Resultate1 t2 on t1.id>t2.id
          where t1.PATISTAMMNR = t2.PATISTAMMNR
          and t1.EINSKURZ = t2.EINSKURZ
          and t1.LABEINDAT = t2.LABEINDAT
          and t1.ERGEBNIST2 = t2.ERGEBNIST2
          and t1.ERGEBNIST1 = t2.ERGEBNIST1)

jETZT FUNKTIONIERT ES:

VIELEN DANK

Gruß
Mina
Titel: Re: Doppelte Einträge löschen
Beitrag von: DF6GL am Januar 04, 2018, 11:35:05
Hallo,

in der Tat..  8)

ebs17 hat auch eine Alternative gegeben..