Обновить столбец на основе поля из другой таблицы - PullRequest
6 голосов
/ 18 мая 2010

Я хотел бы обновить значения в одной таблице на основе соответствующих значений из других таблиц. Допустим, вы хотите обновить цены на товары, предоставленные одним конкретным производителем, чье имя указано в таблице Manufacturers, а таблица Pieces содержит только идентификатор производителя.

Я видел несколько решений для MySQL здесь и для MS SQL Server здесь , но ни одно из них, похоже, не работает в SQLite.

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 18 мая 2010

Вы пробовали что-то подобное?

UPDATE Pieces
SET price = 42
WHERE manufacturer_id = (
    SELECT id
    FROM Manufacturers
    WHERE Name = 'FooBar Inc.'
)
0 голосов
/ 18 мая 2010

Для 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'));

Это не очень эффективно, но вы можете настроить его в соответствии со своими потребностями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...