Hallo zusammen, ich steh grad bischen aufm Schlauch.
Vorhaben: Tabellen aufräumen.
Da ich in dem gegebenen Framework ( WCF ) nicht abfangen kann, wenn ein User gelöscht wurde, muss ich mittels zeitgesteuerten Aufträgen die Datenbank aufräumen.
Tabellenstruktur:
CREATE TABLE `wcf1_comc_blog_comments` (
`commentID` int(10) NOT NULL auto_increment,
`itemID` int(10) NOT NULL,
`userID` int(10) NOT NULL,
`username` varchar(255) NOT NULL,
`comment` text NOT NULL,
`time` int(10) NOT NULL,
PRIMARY KEY (`commentID`)
) ENGINE=MyISAM;
CREATE TABLE `wcf1_comc_blog_items` (
`itemID` int(10) NOT NULL auto_increment,
`userID` int(10) NOT NULL,
`categoryID` int(10) NOT NULL,
`subject` varchar(255) NOT NULL,
`text` text NOT NULL,
`time` int(10) NOT NULL,
PRIMARY KEY (`itemID`)
) ENGINE=MyISAM;
Nun ist zu beachten: die userID aus den Kommentaren bezieht sich auf den User, der den Kommentar geschrieben hat. um also alle Kommentare, die für einen User
gegeben wurden zu löschen, muss ein Umweg über die items Tabelle gegangen werden.
Ich versuche das Problem so zu lösen:
DELETE FROM wcf1_comc_blog_comments c
LEFT JOIN wcf1_comc_blog_items i USING(itemID)
LEFT JOIN wcf1_user u ON(i.userID=u.userID) WHERE u.userID is NULL
Doch der MySQL Server meint:
#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 'LEFT JOIN wcf1_comc_blog_items i USING(itemID)
LEFT JOIN wcf1_user u ON(i.userI' at line 2
Irgendwie seh ich den Syntaxfehler nur nicht?
Warum ich übrigends das letzte mal ein ON statt einem USING nehm: userID ist ja doppelt, einmal in comments und einmal in items. deswegen muss definiert werden, welches userID er vergleichen soll
Meine alternative wäre: in die comments tabelle "einfach" noch eine weitere spalte hinzuzufügen, in der die userID des schreibers des Blogs steht, um es dann nacher komfortabel zu löschen.
Ich bin user-158kbar für jede Hilfe