Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: ReneB am November 22, 2018, 10:12:34

Titel: Löschabfrage
Beitrag von: ReneB am November 22, 2018, 10:12:34
Hallo liebes Forum,

habe lange nicht Eure Hilfe gebraucht, aber jetzt ist es mal wieder soweit. Ich habe eine Löschabfrage erstellt, mit der ich in Abhängigkeit zu einer zweiten Tabelle, Daten in der ersten Tabelle löschen will. Heist, sind diese Daten in der zweiten Tabelle vorhanden, welche den Kriterien entsprechen, soll er diese aus der ersten löschen, um doppelte Daten zu vermeiden. Leider funktioniert es nicht, da er Daten löschen will, obwohl diese nicht in der zweiten Tabelle existent sind. Hier ist der SQL Code aus der Abfrage, vielleicht hat jemand eine Idee.

DELETE Datenimport_tbl.Kunde, Datenimport_tbl.AuftragsNr, Datenimport_tbl.MaterialNr, Datenimport_tbl.Materialbeschreibung
FROM Datenimport_tbl
WHERE (((Datenimport_tbl.Kunde) In (select Kunde from [Haupttabelle])) AND ((Datenimport_tbl.AuftragsNr) In (select AuftragsNr from [Haupttabelle])) AND ((Datenimport_tbl.MaterialNr) In (select MaterialNr from [Haupttabelle])) AND ((Datenimport_tbl.Materialbeschreibung) In (select Materialbeschreibung from [Haupttabelle])));

Danke vorab
Rene
Titel: Re: Löschabfrage
Beitrag von: ebs17 am November 22, 2018, 11:28:09
Siehe Grundlagen - SQL ist leicht (4) - Aktualisierung einer Tabelle (https://www.ms-office-forum.net/forum/showthread.php?t=304156)

Deine Abfrage scheitert, weil nicht auf die Kombination der Schlüssel geprüft wird, sondern nur eine Prüfung stattfindet, ob jeder Einzelschlüssel irgendwo in der Haupttabelle vorhanden ist.
Titel: Re: Löschabfrage
Beitrag von: ReneB am November 22, 2018, 14:08:29
Hallo,

danke für die schnelle Antwort. Wie könnte ich die Abfrage ändern, daß alle Kriterien berücksichtigt werden?

Rene
Titel: Re: Löschabfrage
Beitrag von: ebs17 am November 22, 2018, 14:20:15
Das Blaue ist ein Link. Damit erreichst Du einen anderen Beitrag. Dort ist auch eine passende Löschabfrage vorhanden, bei der jetzt aber nur zwei statt vier Schlüsselfelder verwendet werden.

Eventuell führst Du Dir sogar den gesamten Inhalt des Beitrages zu Gemüte. Da kann man in Praxis entnehmen, dass man in einer Datenimorttabelle gar nichts zu löschen braucht, wenn man in der Zieltabelle nur das einfügt, was neu ist.
Titel: Re: Löschabfrage
Beitrag von: Lachtaube am November 22, 2018, 14:29:59
Alle Bedingungen müssen in jedem Datensatz parallel wahr sein, um gleiche Daten zu ermitteln.

DELETE FROM Datenimport_tbl I
WHERE  EXISTS
       ( SELECT 1
         FROM   Haupttabelle
         WHERE  Kunde                = I.Kunde      AND
                Auftragsnr           = I.Auftragsnr AND
                Materialnr           = I.Materialnr AND
                Materialbeschreibung = I.Materialbeschreibung );
Titel: Re: Löschabfrage
Beitrag von: ReneB am November 28, 2018, 13:40:54
Hallo und sorry das ich mich jetzt erst melde.

Danke für den Support. Da es noch andere Probleme gibt, werde ich diese Geschichte aufgeben müssen und nach anderen Lösungsansätzen suchen. Trotzdem ist Euer Tip gespeichert und wird mir vielleicht später noch hilfreich sein.

Bis dahin

Rene