Usando update com inner join. (MySql)

Imagine a situação: Você tem uma tabela com os dados de um produto e outra tabela com uma coluna complementar. As duas tabelas possuem um campo que pode (seguramente) ser utilizado como chave. Neste post mostro como criar um update com inner join, para que você possa atualizar uma das tabelas com os dados da outra.

Imagine a tabela PRODUTO:

  • prod_id
  • prod_nome
  • prod_descricao
  • prod_status

E a tabela PRODUTO_AUXILIAR:

  • aux_id
  • prod_id
  • prod_status

 

Acho importante mencionar que estas tabelas só tem duas utilidades:

  1. Servir de exemplo neste post;
  2. Servir de exemplo de uma péssima arquitetura de banco 😛 ;

 

O que queremos é atualizar a coluna prod_status (da tabela produto) com a informação que consta na coluna prod_status da tabela produto_auxiliar onde o prod_id seja menor que 10. A coluna prod_id das duas tabelas pode ser utilizada como chave na ligação de um inner join.

 

Este é um update razoavelmente simples:

A sintaxe do inner join para o update é feita logo após a definição do nome da tabela que será atualizada.

Neste exemplo, se você quiser atualizar todos os registros da tabela produto com as informações da tabela produto_auxiliar, poderia simplesmente remover a clausula where, uma vez que o inner join vai ‘filtrar’ as linhas afetadas.

 

Quer testar, mas não sabe se vai funcionar? Não seja –aquele estagiário–, utilize as transações:

  • Utilize o comando START TRANSACTION;
  • Faça os testes e confira os resultados;
  • Utilize o commando ROLLBACK; (ou, se tudo der certo, o COMMIT;)

 

 

Espero ter ajudado!

The following two tabs change content below.
Breno RdV
Ex-Psicólogo, com quase uma década de experiência em Recursos Humanos e Gestão de Pessoas, atual desenvolvedor e Analista de Sistemas, trabalhando com PowerBuilder, C#, PowerShell e expandindo horizontes para Python, Xamarin, PHP, Angular e (por que não?) Unity.

Comments

comments

Posted in Banco de Dados, Dev and tagged , , , .