Hallo zusammen,
ich möchte in meiner Tabelle 'anmeldungen' Datensätze anhand einer 'mitglieder_id' und einer 'termin_id' löschen.
Das Datum spielt auch eine Rolle, steht aber in der Tabelle 'termine'.
Ausnahme: Wenn die 'termin_id' auch in der Tabelle 'meldefrist' steht, soll der Datensatz nicht gelöscht werden.
Mit dem folgenden SELECT-Befehl bekomme ich nur die Datensätze angezeigt, die auch wirklich gelöscht werden sollen.
Ich bekomme es aber nicht hin, diese Anweisung in eine DELETE-Anweisung umzubauen.
Wenn ich folgendes versuche:
bekomme ich folgende Fehlermeldung:
You can't specify target table 'anmeldungen' for update in FROM clause
Jemand eine Idee, wie die DELETE-Anweisung aussehen muss, damit genau die Datensätze gelöscht werden, die ich mit der SELECT-Anweisung heraus bekomme?
Ach ja, ich benutze MySQL.
Gruß
Willi
ich möchte in meiner Tabelle 'anmeldungen' Datensätze anhand einer 'mitglieder_id' und einer 'termin_id' löschen.
Das Datum spielt auch eine Rolle, steht aber in der Tabelle 'termine'.
Ausnahme: Wenn die 'termin_id' auch in der Tabelle 'meldefrist' steht, soll der Datensatz nicht gelöscht werden.
Mit dem folgenden SELECT-Befehl bekomme ich nur die Datensätze angezeigt, die auch wirklich gelöscht werden sollen.
SQL:
SELECT T.termin
FROM anmeldungen A
INNER JOIN termine T ON A.id_termine_id = T.termin_id
WHERE T.termin > '2013-10-23'
AND id_mitglieder_id =13
AND NOT
EXISTS (
SELECT id_termin_id, meldefrist
FROM meldefrist AS M
WHERE M.id_termin_id = T.termin_id
Ich bekomme es aber nicht hin, diese Anweisung in eine DELETE-Anweisung umzubauen.
Wenn ich folgendes versuche:
SQL:
DELETE FROM anmeldungen
WHERE id_mitglieder_id IN
(SELECT T.termin_id
FROM anmeldungen A
INNER JOIN termine T ON A.id_termine_id = T.termin_id
WHERE T.termin > '2013-10-23'
AND id_mitglieder_id =13
AND NOT
EXISTS (
SELECT id_termin_id, meldefrist
FROM meldefrist AS M
WHERE M.id_termin_id = T.termin_id
))
bekomme ich folgende Fehlermeldung:
You can't specify target table 'anmeldungen' for update in FROM clause
Jemand eine Idee, wie die DELETE-Anweisung aussehen muss, damit genau die Datensätze gelöscht werden, die ich mit der SELECT-Anweisung heraus bekomme?
Ach ja, ich benutze MySQL.
Gruß
Willi
Zuletzt bearbeitet von einem Moderator: