Gast: Sätze löschen abhängig von anderer Tabelle

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

  1. 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.  
    
    
  2. 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.