Возможно, кофе еще не появился, но у меня возникли проблемы, когда я не могу понять, как выполнить обновление SQL.По сути, у меня есть 3 таблицы, и я пытаюсь обновить поле в таблице1 с данными в таблице2 на основе критериев в таблице 3.
Мои 3 таблицы с данными образца:
tblInvoiceDetail
keyID InvoiceNumber ItemID Qty Price
--------------------------------------------------------
1 200123 100001 4 400
2 200123 100002 1 10
3 200321 100001 1 100
4 200555 100002 2 20
5 200444 100003 4 20
tblInvoices
keyID InvoiceNumber InvoiceDate CustomerID InvoiceTotal
--------------------------------------------------------------------------
1 200123 3/15/19 456123 410
2 200321 5/31/19 123456 100
3 200555 6/30/19 111222 120
4 200444 6/31/19 111222 20
tblItemUpdate
keyID OldItem NewItem
----------------------------------
1 100001 999001
2 100002 999002
3 100003 999003
Вот UPDATE
заявление, которое я пробовал, но оно не обновляет все записи, которые я ожидал.
UPDATE
tblInvoiceDetail
SET
tblInvoiceDetail.ItemID = tblItemUpdate.NewItem
FROM
tblInvoiceDetail
INNER JOIN
tblItemUpdate ON tblInvoiceDetail.ItemID = tblItemUpdate.OldItem
INNER JOIN
tblInvoices ON tblInvoiceDetail.InvoiceNumber = tblInvoices.InvoiceNumber
WHERE
tblInvoices.InvoiceDate < '2019-06-25'
Я подозреваю, что проблема в моих JOIN, поэтому она не соответствует всем нужным записям.
Я хочу изменить ItemID в tblInvoiceDetail, и я хочу, чтобы он нашел совпадение в tblItemUpdate.OldItem и изменил его на значение в tblItemUpdate.NewItem ,Однако я хочу обновить ItemID только в том случае, если tblInvoices.InvoiceDate предшествует 6/25/19.
Итак, с моими примерами данных в tblInvoiceDetail только ключевые идентификаторы 1, 2 иНеобходимо обновить 3.
У меня много записей в моей действующей базе данных, поэтому я могу указать на одну конкретную вещь, которая не работает.Я только что нашел несколько счетов, которые, по моему мнению, должны были измениться, но не изменились.