DAU-Frage: Löschen nicht möglich

21/02/2010 - 17:31 von Alexander Bierig | Report spam
Hallo

ich habe da mal eine Verstàndnisfrage:

Abfrage5 (weil nur kurz zur Datenbereinigung benötigt)
DELETE tbl_Laender.*
FROM tbl_Laender LEFT JOIN Abfrage5 AS a ON tbl_Laender.Land_Nr = a.land
WHERE (([a].[land] Is Null));

Breite der Tabellen ca 5 Felder Text zu max 20 Zeichen
Lànge einmal ca 50tsd Zeilen und ca 105tsd Zeilen, als nix Besonderes


Fehlermeldung:
Geben Sie die Tabelle an, die die zu löschenden Datensàtze enthàlt

Code:
DELETE tl.land_nr
FROM tbl_Laender AS tl LEFT JOIN Abfrage5 AS a ON tl.Land_Nr = a.land
WHERE (([a].[land] Is Null));


nach Korrektur:
Fehlermeldung:
Löschen aus angegebenen Tabellen nicht möglich.

Code:
DELETE tl.*
FROM tbl_Laender AS tl LEFT JOIN Abfrage5 AS a ON tl.Land_Nr = a.land
WHERE (([a].[land] Is Null));



nach Korrektur:
Fehlermeldung:
Geben Sie die Tabelle an, die die zu löschenden Datensàtze enthàlt

Code:
DELETE tbl_Laender
FROM tbl_Laender AS tl LEFT JOIN Abfrage5 AS a ON tl.Land_Nr = a.land
WHERE (([a].[land] Is Null));


nach Korrektur:
Fehlermeldung:
Das MS-Jet-Datenbankmodul erkennt 'tbl_laender.*' nicht als gültiugen
Feldnamen

Code:
DELETE tbl_Laender.*
FROM tbl_Laender AS tl LEFT JOIN Abfrage5 AS a ON tl.Land_Nr = a.land
WHERE (([a].[land] Is Null));

OK, das passt, da die ALiase nicht mehr stimmen.



nach Korrektur:
Fehlermeldung:
Löschen aus angegebenen Tabellen nicht möglich.

Code:
DELETE tbl_Laender.*
FROM tbl_Laender LEFT JOIN Abfrage5 AS a ON tbl_Laender.Land_Nr = a.land
WHERE (([a].[land] Is Null));


"Herr, schmeiss Hirn ra!"



mit extrem langer Laufzeit dann Folgendes erfolgreich:
DELETE tl.*
FROM tbl_Laender as tl
where not exists ( select i.land from abfrage5 as i where
i.land=tl.land_nr);


Wieso kann man sowas nicht per Outer Join lösen?



MfG

Alex. Bierig
 

Lesen sie die antworten

#1 Peter Doering
21/02/2010 - 17:35 | Warnen spam
Hallo,

Alexander Bierig wrote:

Abfrage5 (weil nur kurz zur Datenbereinigung benötigt)
DELETE tbl_Laender.*
FROM tbl_Laender LEFT JOIN Abfrage5 AS a ON tbl_Laender.Land_Nr = a.land
WHERE (([a].[land] Is Null));
[...]
Wieso kann man sowas nicht per Outer Join lösen?



Weil's halt nicht geht. ;-)

Probier so:

DELETE FROM tbl_Laender AS L
WHERE L.Land_Nr Not In
( SELECT land FROM Abfrage5 AS a
WHERE a.land = L.Land_Nr )

Der * nach Delete fehlt uebrigens absichtlich, auch wenn der Abfrageeditor
seine Probleme damit hat. Den brauchst du nicht.

Gruss - Peter

Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Ähnliche fragen