У меня есть следующий запрособновление таблицы путем присоединения к нескольким таблицам
SELECT e.topicShortName, d.catalogFileID, e.topicID
FROM catalog_topics a
LEFT JOIN catalog_files_join b ON a.catalogID = b.foreignKey
LEFT JOIN catalog_files_join c ON c.foreignKey = b.catalogFileID
LEFT JOIN catalog_files d ON d.catalogFileID = b.catalogFileID
LEFT JOIN catalog_lu_topics e ON a.topicID = e.topicID
WHERE b.fileTypeID = 'gvl401'
AND c.fileTypeID = 'gvl25'
AND e.parentID = 'top305'
AND a.sortorder =1
AND e.topicID = 'top318'
который выбирает мне одну строку данных:
topicShortName catalogFileID topicID
Welcoming cfil960 top318
Я хочу, чтобы запустить обновление заявление, так что я могу обновить catalogFileID
до 'cfil123'. У меня есть topicID
со мной, это «top318»
catalogFileID
принадлежит catalog_files
Я не могу показаться, чтобы обернуть мою голову вокруг обновления заявление, которое позволит достичь этого ..
Я не возражаю делать несколько обновлений. Но после операторов обновления указанный выше запрос select должен возвращать cfil123. Но я не могу просто обновить все таблицы, где catalogFileID используется ..
Правильный ответ:
UPDATE catalog_topics a
LEFT JOIN catalog_files_join b ON a.catalogID = b.foreignKey
LEFT JOIN catalog_files_join c ON c.foreignKey = b.catalogFileID
LEFT JOIN catalog_files d ON d.catalogFileID = b.catalogFileID
LEFT JOIN catalog_lu_topics e ON a.topicID = e.topicID
SET d.catalogFileID = 'Cfil123',
b.catalogFileID = 'Cfil123',
c.foreignKey = 'Cfil123'
WHERE b.fileTypeID = 'gvl401'
AND c.fileTypeID = 'gvl25'
AND e.parentID = 'top305'
AND a.sortorder =1
AND e.topicID = 'top318'
Я попытался exacly, но не обновлять b.catalogFileID. Надеюсь, ваш ответ будет работать, но ваш запрос дает мне эту ошибку (я использую MySQL): # 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'WHERE b.fileTypeID =' gvl401 ' И c.fileTypeID =' gvl25 ' И e.parentID =' top 'в строке 8 – 2009-09-07 03:54:14
oh nvmd у вас была дополнительная запятая – 2009-09-07 03:56:18
damnit.теперь он говорит, что обновлены нулевые строки :( – 2009-09-07 04:03:22