2014-09-05 4 views
0

Все три таблицы разные. Единственное, что у них есть, это id и imageОбновление нескольких таблиц с одним запросом

Этот запрос работает только в том случае, если в каждой таблице есть строки.

Каков наилучший способ сделать это? Пожалуйста, не пишите готовые заявления. Это в моем списке ToDo уже :)

UPDATE subcontent, products, content 
SET subcontent.image = NULL, products.image = NULL, content.image = NULL 
WHERE subcontent.image = 3 
OR products.image = 3 
OR content.image = 'test.png' 

Я попытался с помощью LEFT JOIN, но не работает. Является ли запрос неправильным?

UPDATE content 
LEFT JOIN subcontent on 
    subcontent.image = content.image 
LEFT JOIN products on 
    products.image = content.image 
SET content.image = NULL, subcontent.image = NULL, products.image = NULL 
WHERE content.image = 'test.png' 
OR subcontent.image = 3 
OR products.image = 3 

ответ

1

Как насчет трех отдельных обновлений?

UPDATE subcontent 
    SET subcontent.image = NULL 
    WHERE subcontent.image = 3; 

UPDATE products 
    SET products.image = NULL 
    WHERE products.image = 3; 

UPDATE content 
    SET content.image = NULL 
    WHERE content.image = 'test.png'; 

Проблема у вас с попыткой обновления мульти-таблицы в том, что это использует join. Увы, если одна из таблиц пуста, то объединение не будет содержать ни одной строки в любой таблице, которая будет обновляться. Вы можете использовать left join, но тогда вы должны предположить, что первая таблица не пуста. И MySQL не поддерживает полное внешнее соединение.

Три отдельных обновления, вероятно, самый простой способ.

+0

Хм, я рассмотрю 'LEFT JOIN', потому что таблица' content' НИКОГДА не будет пуста. – Draven

+0

Не похоже, что работает 'LEFT JOIN', но я могу сделать это неправильно. Я помещаю запрос в свой оригинальный пост, если вы можете взглянуть. – Draven

+0

@Draven. , , Это, очевидно, не будет делать то, что вы хотите. Поле 'image' похоже содержит строку символов в' content', но число в двух других таблицах. Я бы придерживался трех отдельных запросов. –

Смежные вопросы