Обновление внутреннего соединения sqlite — 3 таблицы

У меня есть 3 таблицы на SQLite, и мне нравится обновлять таблицу1 на основе значений из таблицы3.

В MySQL:

UPDATE table1 t1 
JOIN table2 t2 ON t2.id = t1.id_t2 
JOIN table3 t3 ON t2.id_t3 = t3.id 
SET t1.name = 0 WHERE t3.name = 0;

Я знаю, что SQLite не поддерживает UPDATE-JOIN, но я не знаю, какое хорошее решение без JOIN?


person Rajdon    schedule 29.01.2015    source источник


Ответы (1)


Вам нужно найти идентификатор строки, которую вы хотите обновить, не используя таблицу, для которой будет выполняться обновление. Вы можете найти эти идентификаторы только из двух таблиц «table2» и «table3». Простой подзапрос поможет вам:

UPDATE table1 SET name = 0 
WHERE id_t2 IN (
    SELECT t2.id FROM table2 t2 
    INNER JOIN table3 t3 ON t2.id_t3 = t3.id 
    WHERE t3.name = 0
)
person Taras Velykyy    schedule 29.01.2015
comment
Спасибо, но я поправил свой код, теперь можно посмотреть? - person Rajdon; 30.01.2015
comment
@Rajdon Я обновил ответ. Если вам нужны дополнительные пояснения - дайте мне знать. - person Taras Velykyy; 30.01.2015