Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Löschen aus angegebenen Tabellen nicht möglich - Warum?

212 views
Skip to first unread message

Franz

unread,
Mar 12, 2008, 6:19:10 AM3/12/08
to
Hallo

Ich habe hier schon einige Lösungen gefunden, aber was mir fehlt, ist
die Erklärung, warum die Abfrage

DELETE tblOrders.*, tblOrderDetails.ID
FROM tblOrders LEFT JOIN tblOrderDetails ON
tblOrders.ID=tblOrderDetails.ID
WHERE (((tblOrderDetails.ID) Is Null));

obige Fehlermeldung ergibt (Ich möchte ja auf meine alten Tage immer
noch was lernen....)

Danke für die Tips!

Gruss

Franz

----

Thomas Winkler

unread,
Mar 12, 2008, 6:54:55 AM3/12/08
to
Hi,

> DELETE tblOrders.*, tblOrderDetails.ID

wie würde denn tblOrderDetails aussehen, wenn keine ID mehr eingetragen
wäre....?

Mit Löschweitergabe in der Verknüpfung zwischen tblOrders und
tblOrderDetails würde eine Löschung in tblOrders auch die entsprechenden
Datensätze in tblOrderDetails mit gelöscht.

HTH

Thomas

--
"Access? Damit arbeite ich nicht. Das ist doch nur ein abgespecktes Excel."

Michael Zimmermann

unread,
Mar 12, 2008, 7:02:11 AM3/12/08
to
Hallo!

Franz:


> Ich habe hier schon einige Lösungen gefunden, aber was
> mir fehlt, ist die Erklärung, warum die Abfrage
>
> DELETE tblOrders.*, tblOrderDetails.ID
> FROM tblOrders LEFT JOIN tblOrderDetails ON
> tblOrders.ID=tblOrderDetails.ID
> WHERE (((tblOrderDetails.ID) Is Null));
>
> obige Fehlermeldung ergibt (Ich möchte ja auf meine alten
> Tage immer noch was lernen....)

Das liegt an Deinem Left Join.

Daß Du nach DELETE Felder angibst, läßt auch noch ein
Mißverständnis befürchten: Du kannst damit nur ganze
Datensätze löschen, keine einzelnen Felder.

Generell ist es am geschicktesten, immer aus Tabellen
und nicht aus Abfrageausdrücken zu löschen, also

DELETE FROM Tabelle WHERE Bedingung

Im Fall von Beziehungen wird von unten nach oben gelöscht,
also z. B.

DELETE FROM Bestellung WHERE fiKunde IN (1,2,3)

DELETE FROM Kunden WHERE idKunde IN (1,2,3)

Dabei unterstellt, fiKunde sei der Fremdschlüssel in den
Bestellungen und idKunde der Primärschlüssel in Kunden.

Löschungen aus Tabellen sind immer möglich, und das
Vorgehen hat drei weitere Vorteile:

Man braucht keine Löschweitergabe, man begreift die
Abhängigkeitsstrukturen in der eigenen DB, man lernt
SQL bei der Formulierung manchmal ausgefuchster
Unterabfragen für die Löschbedingungen.

Gib mal in der OH folgenden Suchstring ein: "Wann können
Daten aus einer Abfrage aktualisiert werden", dann erhältst
Du weitere Informationen.

Gruß aus Mainz
Michael

0 new messages