Standart SQL: Löschen aller Zeilen, für die keine Übereinstimmung existiert

WiZdooM

Erfahrenes Mitglied
Mahlzeit

Ich habe zwei Tabellen die "eigentlich" miteinander verknüpft sind. "Eigentlich" aus dem Grund, da es keine Kaskadierung und keine referentielle Integrität zwischen den Tabellen gibt. Diese würde ich gerne herstellen, da der DB-Entwickler das irgendwie verpennt hat, dafür muss ich aber erst die "Leichen" entfernen.

Das Auffinden der Fahrzeuge nicht zu einem Kunden gehören, habe ich so gelöst:
Code:
SELECT *
FROM tbFahrzeug LEFT JOIN tbKunden ON tbFahrzeug.fkKdNr = tbKunden.mkKdNr
WHERE ((tbKunden.mkKdNr) is NULL);

Nur wie kann ich jetzt diese Einträge rauslöschen?
 
Soweit war ich auch schon mal, nur kommt mir dann Access mit Fehler 3128

Geben Sie die Tabelle an, die die zu löschenden Datensätze enthält.

an.

Die Hilfe sagt:
Geben Sie die Tabelle an, die die zu löschenden Datensätze enthält. (Fehler 3128)Geben Sie die Tabelle an, die die zu löschenden Datensätze enthält. (Fehler 3128)

Sie haben versucht eine Löschabfrage auszuführen, jedoch gibt die Abfrage nicht den Namen der Tabelle an, die die zu löschenden Datensätze enthält.
Mögliche Ursache:

  • Sie haben kein Sternchen für jede Tabelle in den Prädikaten ALL, DISTINCT, DISTINCTROW eingegeben. Statt dessen haben Sie Feldnamen (z. B. Kunden.Adresse anstatt Kunden.*) eingegeben.

Somit ist die Lösung korrekterweise

DELETE tbFahrzeug.*
FROM tbFahrzeug LEFT JOIN tbKunden ON tbFahrzeug.fkKdNr = tbKunden.mkKdNr
WHERE ((tbKunden.mkKdNr) is NULL);

Ich war wohl gestern einfach nur Hirn-AFK. Sorry für die Mühe -.-
 
Zurück