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

Я выбрал из этой команды:

SELECT  [Product].[Id] AS [Id],
    [Product].[ProductName] AS [ProductName],
    [Product].[SupplierId] AS [SupplierId],
    [Product].[UnitPrice] AS [UnitPrice],
    [Product].[Package] AS [Package],
    [Order].[TotalAmount] AS [TotalAmount]
FROM [OrderItem]
    FULL JOIN [Order] ON [OrderItem].[OrderId] = [Order].[Id]
    FULL JOIN [Product] ON [OrderItem].[ProductId] = [Product].[Id]
    FULL JOIN [Customer] ON [Order].[CustomerId] = [Customer].[Id]
    FULL JOIN [Supplier] ON [Product].[SupplierId] = [Supplier].[Id]
WHERE    ([Product].[Id] IN ('2', '3'))

Это выдаст:

Id  ProductName SupplierId  UnitPrice   Package TotalAmount
2   Chang   1   20.00   24 - 12 oz bottles  2490.50
2   Chang   1   20.00   24 - 12 oz bottles  2018.60
2   Chang   1   20.00   24 - 12 oz bottles  724.50
2   Chang   1   20.00   24 - 12 oz bottles  3127.00
2   Chang   1   20.00   24 - 12 oz bottles  2262.50
2   Chang   1   20.00   24 - 12 oz bottles  2545.20
2   Chang   1   20.00   24 - 12 oz bottles  2300.80
2   Chang   1   20.00   24 - 12 oz bottles  3302.60
...

Можно ли обновить [Order].[TotalAmount] на основе вывода строки из команды выбора? Например в строке 2 значение 2018,6 к чему-то еще? Условие не должно быть «где 2018,6», так как оно может перезаписать все равные значения.

Или мне нужно включить идентификаторы из таблицы [Order] и обновить на основе этого идентификатора?

Изменить: Если бы я изменил значение строки 2 «TotalAmount» на 500, вывод таблицы будет:

Id  ProductName SupplierId  UnitPrice   Package TotalAmount
2   Chang   1   20.00   24 - 12 oz bottles  2490.50
2   Chang   1   20.00   24 - 12 oz bottles  500.00
2   Chang   1   20.00   24 - 12 oz bottles  724.50
2   Chang   1   20.00   24 - 12 oz bottles  3127.00
2   Chang   1   20.00   24 - 12 oz bottles  2262.50
2   Chang   1   20.00   24 - 12 oz bottles  2545.20
2   Chang   1   20.00   24 - 12 oz bottles  2300.80
2   Chang   1   20.00   24 - 12 oz bottles  3302.60
...

1 Ответ

1 голос
/ 01 ноября 2019

Если вы просто спрашиваете, можете ли вы обновить таблицу, когда она является частью выбора, тогда ответ - да.

UPDATE [Order]
   SET TotalAmount = 'whatever you want'
FROM [OrderItem]
    FULL JOIN [Order] ON [OrderItem].[OrderId] = [Order].[Id]
    FULL JOIN [Product] ON [OrderItem].[ProductId] = [Product].[Id]
    FULL JOIN [Customer] ON [Order].[CustomerId] = [Customer].[Id]
    FULL JOIN [Supplier] ON [Product].[SupplierId] = [Supplier].[Id]
WHERE    ([Product].[Id] IN ('2', '3'))

«все, что вы хотите» может включать в себя практически все, что вы можете сделать ввыбор. Расчет, регистр, несколько столбцов из любой объединенной таблицы. ,.

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