SQL DELETE Postgres 8.3

Antworten
Nachricht
Autor
rasu
Beiträge: 20
Registriert: 10. Nov 2006 10:52

SQL DELETE Postgres 8.3

#1 Beitrag von rasu » 10. Jul 2008 14:27

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.

Antworten