Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Löschabfrage

Begonnen von ReneB, November 22, 2018, 10:12:34

⏪ vorheriges - nächstes ⏩

ReneB

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

ebs17

#1
Siehe Grundlagen - SQL ist leicht (4) - Aktualisierung einer Tabelle

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.
Mit freundlichem Glück Auf!

Eberhard

ReneB

Hallo,

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

Rene

ebs17

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.
Mit freundlichem Glück Auf!

Eberhard

Lachtaube

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 );
Grüße von der (⌒▽⌒)

ReneB

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