Обновление таблицы с несколькими столбцами из оператора выбора - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь обновить таблицу из оператора select, но ни на одну из моих строк это не влияет.Если я запускаю оператор выбора, я получаю результаты, поэтому я не уверен.В примере я сузил предложение where.Мы будем благодарны за любую помощь.

Мой выбор

select 
    a.Code,
    a.ItemGroup,
    a.Pack,
    a.bar_code,
    WHStockLink,WHUseInfoDefs,
    b.[iBinLocationID],
    c.cBinLocationDescription,
    ucIIWBin1,
    WHPackCode,
    WHBarCode,
    IdWhseStk
from
    WhseStk b 
    join StkItem a on a.StockLink = WHStockLink
    inner join _btblBINLocation c on c.idBinLocation = b.iBinLocationID 
where 
    WHWhseID = 3 and 
    IdWhseStk = 1003000221089 
order by WHStockLink

Мое обновление

update WhseStk
    set ucIIWBin1 = t1.cBinLocationDescription
    from (
        select
            a.Code,
            a.ItemGroup,
            a.Pack,
            a.bar_code,
            WHStockLink,
            WHUseInfoDefs,
            b.[iBinLocationID],
            c.cBinLocationDescription,
            ucIIWBin1,
            WHPackCode,
            WHBarCode,
            IdWhseStk
        from  
            WhseStk b 
            join StkItem a on a.StockLink = WHStockLink
            join _btblBINLocation c on c.idBinLocation = b.iBinLocationID 
        --where WHWhseID = 5 and c.idBinLocation = b.iBinLocationID
         ) t1
    where WHWhseID = 5

Если я настрою его, все строки будут иметь одинаковое значение.

То, что я пытаюсь сделать, это на самом деле сопоставить, используя ссылку на акции и Whse, и заполнить 3 новых пользовательских поля в той же таблице, т.е. ucIIWBin1, ucIIWBin2, ucIIWBin13, которые представляют собой описание корзины (объединенное из другой таблицы), штрих-код и пакетиз этой таблицы.

Whse:

Контейнер:

Склад:

1 Ответ

0 голосов
/ 10 декабря 2018

Поскольку вы отметили свой вопрос tsql, я предполагаю, что вы используете sql-сервер.

В этом случае вы можете иметь JOIN s в вашем UPDATE утверждении.В зависимости от отображаемого запроса синтаксис будет выглядеть следующим образом:

UPDATE a
SET a.ucIIWBin1 = c.cBinLocationDescription
FROM WhseStk a
INNER JOIN StkItem b ON b.StockLink = a.WHStockLink
INNER JOIN _btblBINLocation c on c.idBinLocation = a.iBinLocationID 
WHERE a.WHWhseID = 5

Поскольку вы упомянули, что ваши запросы были сужены, вам может потребоваться адаптировать приведенный выше пример (особенно вы упомянули, что вам нужно обновить3 поля, пока вы показываете только одно в вашем коде).

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