Ich habe folgende SQL-Tabellen
t1 mit den Feldern t1_id, t1_inhalt
t2 mit den Feldern t2_id, t2_t1_id, t2_wert
abelle t2 enthält einen Fremdschlüssel auf Tabelle t1 (t2_t1_id)
Nun möchte ich alle Datensätze aus Tabelle t2 löschen mit der Bedingung daß der inhalt von t1_inhallt = 5 ist.
Wenn man in Postgres 8.3 den Schalter add_mising_from=on setzt funktioniert folgender SQL-Befehl:
DELETE FROM t2
WHERE (t2.t2_t1_id=t1.t1_id)
AND t1.t1_inhalt=5
;
Setzt man den Schalter add_missing_from=off wird die Fehlermeldung
Fehlender Eintrag in FROM Klausel für Tabelle t1
ausgegeben.
Kann mir jemand die Syntax mit richtiger FROM Klausel nennen?
Der oben angeführte Schalter ist nur noch aus Kompatibilitätsgründen in der Config und ich möchte den rausnehmen.
Hinweis:
Die in MYSQL ab Version 4 mögliche Syntax:
DELETE T2 FROM t1, t2
WHERE (t2.t2_t1_id=t1.t1_id)
AND t1.t1_inhalt=5
;
geht nicht
und eine Lösung etwa in dieser Form
DELETE FROM t2
WHERE t2.t2_id IN
(
SELECT t2.t2_id FROM t2,t1
WHERE (t2.t2_t1_id=t1.t1_id)
AND t1.t1_inhalt=5
)
;
macht abgesehen von diesem Trivialbeispiel keinen Sinn.