Как я могу обновить столбцы таблицы A (Цена и лимит) из таблицы B и C

#sql

Вопрос:

Таблица для обновления

Как я могу обновить данные в таблице A с помощью одного запроса на обновление?

Комментарии:

1. Не копируйте данные между таблицами. Вместо этого создайте представление — в нем всегда будут обновленные данные.

Ответ №1:

Попробуйте что-нибудь вроде : (я еще не тестировал это)

 BEGIN TRANSACTION

UPDATE tableA 
SET tableA.Price = tableB.Price
FROM tableA, tableB
WHERE tableA.Item = tableB.Item

UPDATE tableA 
SET tableA.Limit = tableC.Limit
FROM tableA, tableC
WHERE tableA.CName = tableC.CName

COMMIT
 

Комментарии:

1. пробовал, но строки не обновлялись

2. Сначала попробуйте только с tableA и tableB , как : UPDATE tableA SET tableA.Price = tableB.Price FROM tableA, tableB WHERE tableA.Item = tableB.Item

3. Да, одно условие работает, но не оба, как я могу заполнить обе колонки в одном запросе?

4. я считаю, что вам следует использовать транзакцию , я отредактировал свой пост

Ответ №2:

попробуйте выполнить этот запрос

 UPDATE A a
SET a.price = b.price, a.limit = c.limit 
FROM B b, C c
WHERE a.item = b.item and a.cname = c.cname;
 

Комментарии:

1. выдача ошибки Неправильный синтаксис рядом с «a» и удаление псевдонима , дающего 0 обновленных строк

2. UPDATE A SET A.price = B.price, A.limit = C.limit FROM A INNER JOIN B ON A.item = B.item INNER JOIN C ON A.cname = C.cname;