Ausführen einer Löschabfrage in Access
Kiska Kogtistaya
- datenbank
Grüzi miteinand,
Löschabfrage mit 2 Tabellen
A=Tabelle mit zu löschenden Werten
B=Tabelle für Bedingung, verknüpft mit MySQL über ODBC.
Die Tabellen stehen in keiner festen Beziehung. Der Key von A entspricht einem Feld in B.
Die Löschabfrage zeigt in der Vorschau die gewünschten
Sätze, aber bei Ausführung kommt die Fehlermeldung
"Aus der angebenen Tabellen kann nicht gelöscht werden".
Lasse ich die Tabelle B weg, löscht die Abrage problemlos
alle Sätze (plötzlich kann doch gelöscht werden !!)
Gute Ideen Vorschläge ?
Danke
Kiska Kogtistaya
Kiska Kogtistaya,
keine Ahnung von Access, aber es ist für Datenbanken völlig normal, dass die referentielle Integrität überwacht wird, d.h. also, dass nicht unbeabsichtigt Felder gelöscht werden, die mit einer anderen Tabelle verknüpft sind.
Ein Beispiel: In einer Firmendatenbank gibt es eine Untertabelle für verschiedene Mitarbeiter. Wenn ich jetzt die Firma lösche, bleiben die einzelnen Mitarbeiter als Datenschrott in der anderen Tabelle übrig, da ich sie normalerweise über die Firma anspreche.
Guck mal in der Access-Hilfe, aber normalerweise musst Du erst die abhängigen Datensätze löschen, bevor Du die entsprechenden Werte in der anderen Tabelle entfernen kannst.
Viele Grüße
Mathias Bigge
Grüzi miteinand,
Servus Kiska Kogtistaya
Löschabfrage mit 2 Tabellen
A=Tabelle mit zu löschenden Werten
B=Tabelle für Bedingung, verknüpft mit MySQL über ODBC.
Ich gehe davon aus, dass in A alles gelöscht werden soll, was NICHT in B steht.
Die Tabellen stehen in keiner festen Beziehung. Der Key von A entspricht einem Feld in B.
Wie jetzt ? Das ist doch eine Beziehung.
Die Löschabfrage zeigt in der Vorschau die gewünschten
Sätze, aber bei Ausführung kommt die Fehlermeldung
"Aus der angebenen Tabellen kann nicht gelöscht werden".
Genauer bitte...
Lasse ich die Tabelle B weg, löscht die Abrage problemlos
alle Sätze (plötzlich kann doch gelöscht werden !!)
Logisch, lies' mal hierzu das Posting von Herrn Bigge. Delete * geht immer.
Gute Ideen Vorschläge ?
Probier mal folgenden Syntax - wie gesagt, ich lösche alle A, die nicht in B stehen:
DELETE * FROM A
WHERE A.key NOT IN (SELECT key FROM B);
Es kann durchaus sein, dass hier anstatt * die einzelnen Spaltennamen angegeben werden müssen. Wie sich Access und MySQL vertragen, weiß ich leider nicht. Mit MS SQL und Access geht's.
Viel Erfolg, Jörg
Danke
Kiska Kogtistaya
Grüzi miteinand,
wer Primärschlüssel setzt, ist ganz klar im Vorteil :)
Danke für Eure Tipps
Kiska Kogtistaya