Vinzenz Mai: MySQL DELETE

Beitrag lesen

Hallo,

ich krieg's gerade nicht hin. Folgendes SQL-Statement funktioniert einwandfrei, um Datensätze in der Tabelle jstree\_structure zu löschen:

DELETE
s1 . * ,
c . *
FROM
jstree_structure s1,
c                                                              -- c zum 1.
LEFT JOIN content_offline c ON s1.site_id = c.site_id        -- c zum 2.
LEFT JOIN jstree_structure s2 ON s1.parent_id = s2.site_id
WHERE (
s2.site_id IS NULL
AND s1.parent_id
IS NOT NULL
)
OR s1.parent_id =2600

  
  

> MySQL meldet:  
> #1066 - Not unique table/alias: 'c'  
  
Ja. Das springt einem direkt ins Auge. Im ersten Statement genauso wie in den folgenden.  
  

> Warum ist hier 'c' not unique. Habe ich irgendetwas übersehen?  
  
Weil Du es zweimal verwendest. In der DELETE-Klausel kannst Du bereits auf Aliasnamen zugreifen, die erst später deklariert werden. In der FROM-Klausel geht das dagegen nicht. Ich weiß auch nicht, was Du mit dem Crossjoin bezweckst. Vermutlich willst Du in der FROM-Klausel \*kein\*  
  
    `, c`{:.language-sql}  
  
verwenden.  
  
  
Freundliche Grüße  
  
Vinzenz