#sql-server #tsql #join #sql-update
#sql-сервер #tsql #Присоединиться #sql-обновление
Вопрос:
У меня есть следующие отношения в MSSQL DB:
Я хочу создать запрос НА ОБНОВЛЕНИЕ, где я могу отфильтровать значения первой таблицы. Пример выглядит следующим образом:
Я хочу получить все продукты из Inv_Transaction_Lines_Table, где Document_No из первой таблицы (Gen_Documents_Table_1) равно ‘3250824’, а состояние ‘Released’
Запрос SELECT очень прост:
SELECT dbo.Inv_Transaction_Lines_Table.*, dbo.Inv_Transaction_Lines_Table.Product_Id AS Expr1, dbo.Gen_Documents_Table.Document_No, dbo.Inv_Transaction_Lines_Table.Quantity_Base AS Expr2
FROM dbo.Gen_Documents_Table AS Gen_Documents_Table_1 RIGHT OUTER JOIN
dbo.Inv_Transactions_Table RIGHT OUTER JOIN
dbo.Inv_Transaction_Lines_Table ON dbo.Inv_Transactions_Table.Transaction_Id = dbo.Inv_Transaction_Lines_Table.Transaction_Id ON
Gen_Documents_Table_1.Id = dbo.Inv_Transactions_Table.Document_Id LEFT OUTER JOIN
dbo.Gen_Documents_Table ON Gen_Documents_Table_1.Master_Document_Id = dbo.Gen_Documents_Table.Id
WHERE (Gen_Documents_Table_1.State = N'30') AND (dbo.Gen_Documents_Table.Document_No = N'3250824')
но я не могу справиться с запросом на ОБНОВЛЕНИЕ.
Спасибо!
Ответ №1:
если ваш запрос для select правильный, вы можете использовать обновление для того же запроса для select .например, если вы хотите обновить quantity_base :
update Inv_Transaction_Lines_Table set quantity_base = 'A'
FROM dbo.Gen_Documents_Table AS Gen_Documents_Table_1 RIGHT OUTER JOIN
dbo.Inv_Transactions_Table RIGHT OUTER JOIN
dbo.Inv_Transaction_Lines_Table ON dbo.Inv_Transactions_Table.Transaction_Id = dbo.Inv_Transaction_Lines_Table.Transaction_Id ON
Gen_Documents_Table_1.Id = dbo.Inv_Transactions_Table.Document_Id LEFT OUTER JOIN
dbo.Gen_Documents_Table ON Gen_Documents_Table_1.Master_Document_Id = dbo.Gen_Documents_Table.Id
WHERE (Gen_Documents_Table_1.State = N'30') AND (dbo.Gen_Documents_Table.Document_No = N'3250824')