MySQL DELETE
heinetz
- datenbank
1 Vinzenz Mai0 heinetz
Hallo Forum,
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
LEFT JOIN `content_offline` c ON s1.site_id = c.site_id
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
Mein Versuch, gleichzeitig in der Tabelle Datensätze in der Tabelle
content\_offline
zu löschen, scheitert, wenn ich es auf folgende Weise versuche:
DELETE
s1 . * ,
c . *
FROM
`jstree_structure` s1,
c
LEFT JOIN `content_offline` c ON s1.site_id = c.site_id
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'
Ich habe einiges versucht:
DELETE
s1,
c
FROM
`jstree_structure` s1,
c
LEFT JOIN `content_offline` c ON s1.site_id = c.site_id
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
DELETE
FROM
`jstree_structure` s1,
c
LEFT JOIN `content_offline` c ON s1.site_id = c.site_id
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
... aber das haut leider auch nicht hin ;(
Warum ist hier 'c' not unique. Habe ich irgendetwas übersehen?
danke für Tipps und
beste gruesse,
heinetz
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 JOINcontent_offline
c ON s1.site_id = c.site_id -- c zum 2.
LEFT JOINjstree_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
Hello,
danke! Ich habe das mittlerweile anders gelöst.
beste gruesse,
heinetz