Seite 1 von 1

[GELÖST] SQL - DELETE über verknüpfte Tabellen

Verfasst: Fr 15. Mai 2015, 09:42
von Wambui
Hallo,
ich habe in Base zwei Tabellen in einer Datenbank erstellt, "KundenStammDaten" (Primärschlüssel "ID") und "JournalTabelle" (Primärschlüssel "JID"), die über eine 1-n-Beziehung verknüpft sind. Ein Kunde kann viele Journal-Einträge besitzen. Dabei enthält "JournalTabelle" in der Spalte "KundenID" die ID aus der Tabelle "KundenStammDaten".

Ich möchte jetzt einen SQL-Befehl erstellen, der sowohl einen Kunden aus "KundenStammDaten" löschen kann und dabei auch die zu ihm gehörenden Einträge aus "JournalTabelle" löscht.
In der SQL-Anweisung von Base probiere ich

Code: Alles auswählen

DELETE FROM "JournalTabelle" "KundenStammDaten" WHERE 'KundenID' = 'ID'  AND "KundenStammDaten".Nachname LIKE 'Boyd'
aus, ohne dass in den Tabellen der Kunde und seine Journaleinträge gelöscht werden. Base sagt auch "Befehl erfolgreich ausgeführt".

Was mache ich hier falsch?

Grüße
Wambui

Re: SQL - DELETE über verknüpfte Tabellen

Verfasst: Fr 15. Mai 2015, 15:59
von RobertG
Hallo Wambui,

Du kannst nur Daten aus einer Tabelle auf einmal löschen.
Dein Code

Code: Alles auswählen

DELETE FROM "JournalTabelle" "KundenStammDaten" WHERE 'KundenID' = 'ID'  AND "KundenStammDaten".Nachname LIKE 'Boyd'
ist eigentlich so falsch, dass ich mir gar nicht vorstellen kann, was denn Base da wohl erfolgreich hat ausführen können:
1) Tabellen werden durch ein Komma voneinander getrennt (solange überhaupt mehrere Tabellen vorkommen dürfen)
2) 'KundenID' ist ein Text, bezieht sich nicht auf ein Feld. Es wird nie 'KundenID' = 'ID' sein, weil beides unterschiedliche Texte sind
3) «Nachname» ist nicht in Anführungszeichen gesetzt - mit etwas Glück klappt so etwas manchmal.

Ich würde folgendermaßen vorgehen:
Extras → Beziehungen
Da hast Du die Beziehung definiert, aber vermutlich nicht die Löschoptionen.
Klicke auf die Verbindung zwischen den Tabellen. Rechte Maustaste → Bearbeiten ... und die Relationen genauer definieren. Dort "Kask. Löschen" wählen.
Wenn Du das abspeicherst, dann löscht Du mit dem Löschen eines Kunden alle Daten, die mit ihm aus der anderen Tabelle zusammen hängen.

Siehe dazu auch im Handbuch "Verknüpfung von Tabellen".

Gruß

Robert

Re: [GELÖST] SQL - DELETE über verknüpfte Tabellen

Verfasst: Fr 15. Mai 2015, 16:24
von Wambui
Vielen Dank für den Hinweis.