Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Update com Inner Join em mais de um campo

Bom dia, professor.

No caso do exemplo foi alterado um campo de acordo com um outro campo, mas se eu desejasse alterar 2 campos com conteúdo de outros dois campos da tabela fonte, como seria?

1 resposta
solução!

Oi! Tudo certinho por aí?

Para atualizar mais de um campo, basta adicionar mais campos ao comando UPDATE.

Se você quiser atualizar mais de um campo, você pode simplesmente adicionar mais campos ao comando UPDATE. Veja o exemplo abaixo:

UPDATE tabela_de_produtos tp
SET tp.NOME_DO_PRODUTO = (
        SELECT tpf.NOME_DO_PRODUTO
        FROM tabela_de_produtos_fonte tpf
        WHERE tpf.CODIGO_DO_PRODUTO = tp.CODIGO_DO_PRODUTO
    ),
    tp.PRECO_DE_LISTA = (
        SELECT tpf.PRECO_DE_LISTA
        FROM tabela_de_produtos_fonte tpf
        WHERE tpf.CODIGO_DO_PRODUTO = tp.CODIGO_DO_PRODUTO
    )
WHERE EXISTS (
        SELECT 1
        FROM tabela_de_produtos_fonte tpf
        WHERE tpf.CODIGO_DO_PRODUTO = tp.CODIGO_DO_PRODUTO
        AND tpf.EMBALAGEM = 'PET' -- Condição para embalagem PET
    );

Utilizei, como exemplo, a TABELA_DE_PRODUTOS e TABELA_DE_PRODUTOS_FONTE. Digamos que o valor da embalagem PET mudou, e apenas esses produtos precisaram de alterações no valor.

Nesse caso, é possível adicionar um operador AND no filtro WHERE que compõe a subquery do EXISTS. Assim, o código do produto será checado como validação, e o tipo de embalagem fará o filtro necessário. São dois campos sendo checados.

Já para a alteração de mais campos na tabela que está recebendo essas mudanças, basta adicionar vírgulas separando as instruções, no UPDATE.

Espero ter ajudado!

Forte abraço.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!