Обновление таблицы и установка значений полей для результата левого соединения - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть таблица Sales с полем Vendor («Компания A», «Компания B», «Trader X»), и я создал отдельную таблицу под названием Vendors с двумя полями: VendorID и VendorName.

Я хочу удалить поле Vendor в таблице Sales, заменить его на поле VendorID и заполнить поле соответствующими VendorID.Другими словами, замените имена поставщиков в таблице Sales их идентификаторами из таблицы Vendors.

Я пробовал множество решений, но они не работают.Вот тот, который я думаю, будет работать.Некоторые записи в таблице «Продажи» не имеют поставщиков в списке.Имеется 203 записи, и при левом соединении при запуске он сам возвращает всех 203 поставщиков и соответствующие нулевые значения.

Update Sales
Set Sales.VendorID = (Select VendorID From Vendors v Left Join Sales s on 
v.VendorName = s.Vendor);

Когда я запускаю это, я получаю диалоговое окно, спрашивающее:

Введите значение параметра

Или я получаю сообщение об ошибке:

Операция должна использовать обновляемый запрос

Я используюMS Access 2016.

1 Ответ

0 голосов
/ 01 февраля 2019

Я думаю, что вам не нужен подзапрос, вы можете просто использовать синтаксис UPDATE ... JOIN ... SET, например:

UPDATE sales AS s
INNER JOIN Vendors AS v ON v.VendorName = s.Vendor
SET s.VendorID = v.VendorID
...