Я хотел бы обновить значения в одной таблице на основе соответствующих значений от других таблиц. Скажите, что Вы хотите обновить цены на части, обеспеченные одним определенным производителем, имя которого находится в таблице Manufacturers
с Pieces
таблица, содержащая только идентификатор производителя.
Я видел несколько решений для MySQL здесь и для SQL Server MS здесь, но ни один из них, кажется, не работает в SQLite.
Какое-либо предложение?
Вы пробовали что-то подобное?
UPDATE Pieces
SET price = 42
WHERE manufacturer_id = (
SELECT id
FROM Manufacturers
WHERE Name = 'FooBar Inc.'
)
Для SQLite в операторах UPDATE нет функции JOIN. Единственный вариант, который у вас есть, - это создавать связанные подзапросы:
UPDATE pieces
SET price = (SELECT SUM(price)
FROM manufacturers
WHERE pieces.manufacture_id = manufacturers.id)
WHERE manufacture_id in (SELECT id
FROM manufacturers
WHERE name IN ('boo', 'foo'));
Это не очень эффективно, но вы можете настроить его под свои нужды.