Sätze löschen abhängig von anderer Tabelle
Gast
- datenbank
Hallo,
habe eine Tabelle mit Einträgen, jeder Eintrag ist einer adress_id zugeordnet.
Nun möchte ich die Einträge löschen, die zu einer bestimmten Adress-Art gehören.
Die richtigen Sätze sehe ich mit
SELECT
evb.id
,evb.wunsch_event_id
,evb.gebuchte_event_id
,evb.adress_id
,adr1.adr_kz
,adr1.name1
,adr1.adr_unt
FROM `tm_eventbuchungen` evb
LEFT JOIN tm_adressen adr1
ON adr1.id = evb.adress_id
WHERE evb.wunsch_event_id=400
AND adr1.adr_kz=1
LIMIT 0,100
Kann sie aber nicht löschen mit
DELETE
FROM `tm_eventbuchungen` evb
LEFT JOIN tm_adressen adr1
ON adr1.id = evb.adress_id
WHERE evb.wunsch_event_id=400
AND adr1.adr_kz=1
LIMIT 0,100
Fehlermeldung:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'evb LEFT JOIN tm_adressen adr1 ON adr1.id = evb.adress_id WHERE evb.wu' at line 2
Was zum Teufel ist evb.wu?
Gast
Hi,
DELETE
FROM
tm_eventbuchungen
evb
LEFT JOIN tm_adressen adr1
ON adr1.id = evb.adress_id
WHERE evb.wunsch_event_id=400
AND adr1.adr_kz=1
LIMIT 0,100
>
> Fehlermeldung:
> #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'evb LEFT JOIN tm\_adressen adr1 ON adr1.id = evb.adress\_id WHERE evb.wu' at line 2
> Was zum Teufel ist evb.wu?
Der Anfang von evb.wunsch. Ab der vermuteten Fehlerposition werden n Zeichen des Statements ausgegeben.
M.W. kann beim Delete kein JOIN benutzt werden. Das müßtest Du vermutlich über die Where-Clause abfackeln (WHERE exists ... oder WHERE id IN (hier Dein Select, bei dem nur die ID selektiert wird))
cu,
Andreas
--
[Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)
[O o ostern ...](http://ostereier.andreas-waechter.de/)
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
Tach!
Kann sie aber nicht löschen mit
DELETE
FROM
tm_eventbuchungen
evb
LEFT JOIN tm_adressen adr1
ON adr1.id = evb.adress_id
WHERE evb.wunsch_event_id=400
AND adr1.adr_kz=1
LIMIT 0,100
Du musst die richtige Syntax für Multi-Table-[DELETE](http://dev.mysql.com/doc/refman/5.5/en/delete.html) verwenden. Du kannst zwar Joins zu anderen Tabellen angeben, um deine Bedingungen formulieren zu können, aber du muss vor der FROM-Klause angeben, von welcher Tabelle denn nun gelöscht werden soll.
DELETE FROM ... ist Single-Table-Syntax, da ist ein Alias nicht notwendig/erlaubt.
DELETE x FROM ... ist Multi-Table-Syntax, da muss x der Alias sein oder der Tabellennamen, wenn du kein Alias verwendest.
> Fehlermeldung:
> #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'evb LEFT JOIN tm\_adressen adr1 ON adr1.id = evb.adress\_id WHERE evb.wu' at line 2
> Was zum Teufel ist evb.wu?
Ein abgeschnittener Bezeichner im Zitat deines Statements, in dem Fall irrelevant, weil der Anfang nach dem "near" auf die fehlerhafte Stelle verweist.
dedlfix.