kann man per SQL aus einer gespeicherten JOIN-Abfrage Daten löschen?

28/02/2009 - 16:25 von Martin | Report spam
Hallo,

kann man per SQL aus einer gespeicherten JOIN-Abfrage Daten löschen?

Als Beispiel habe ich folgendes Szenario aus der Nordwind-Datenbakn:

Tabelle Artikel
Tabelle Lieferanten

Basierend auf die Tabellen erstelle ich eine Auswahlabfrage und speicher
ich sie unter dem Namen qryArtLieferant

SELECT
A.[Artikel-Nr],
A.Artikelname,
L.Firma,
L.Land
FROM Artikel AS A
LEFT JOIN Lieferanten AS L ON L.[Lieferanten-Nr] = A.[Lieferanten-Nr]

Jetzt möchte ich aus dieser Abfrage alle Artikel-Zeilen löschen, deren
Lieferanten das Land 'USA' haben.

Dazu schreibe ich eine weitere Löschabfrage:

DELETE DISTINCTROW *
FROM qryArtLieferant
WHERE Land="USA"

Beim Ausführen dieser Löscheabfrge erhalte ich immer die Fehlermeldung:
Löschen aus angegebenen Tabellen nicht möglich. (Fehler 3086)

Jetzt meine prinzipielle Frage: kann man überhaupt aus einer
*gespeicherten* JOIN-Abfrage Daten per SQL löschen?

Ich kann aus der "qryArtLieferant" manuell löschen und ich kann auch
über direkten JOIN-Löschabfrage auch Datensàtze löschen:

DELETE DISTINCTROW A.*
FROM Artikel AS A
LEFT JOIN Lieferanten AS L ON L.[Lieferanten-Nr] = A.[Lieferanten-Nr]
WHERE Land="USA"


Danke & Gruß
Martin
 

Lesen sie die antworten

#1 Mark Doerbandt
01/03/2009 - 11:30 | Warnen spam
Hallo, Martin,

Martin:

kann man per SQL aus einer gespeicherten JOIN-Abfrage Daten löschen?



<OH>
DELETE [table.*]
FROM table
WHERE criteria

The DELETE statement has these parts:

Part Description
table The optional name of the table from which records are deleted.
table The name of the table from which records are deleted.
criteria An expression that determines which records to delete.
</OH>

... da steht (bei mir engl.) "Table", nicht "Query".

DISTINCTROW steht da übrigens nicht.

Gruss - Mark

Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beitràge senden.

Ähnliche fragen