MySql

Em por

Olá, neste artigo vamos mostrar de várias maneiras, como inserir dados de uma tabela em outra, utilizando o MYSQL.

Muitas vezes é necessário fazer um INSERT de dados em uma tabela (“ALVO”) trazendo resultados de outra tabela (“ORIGEM”) na mesma base de dados ou em bases diferentes. Para fazer esta instrução SQL na mesma base de dados, podemos até omitir o banco de dados, desde que esteja com ele selecionado. Agora, para bases diferentes, é imprescindível o uso do nome do banco, senão é óbvio que irá dar erro, pois ele não saberá quem é MARIA e quem é JOANA.

Pois bem, então como fazer? 

Podemos fazer da seguinte forma:

 INSERT INTO banco.tabela-alvo (campo1, campo2, campo3...) SELECT campo1, campo2, campo3... FROM banco.tabela-origem; 

Atente-se para que os campos estejam na mesma sequência tanto na instrução INSERT quanto na instrução SELECT, pois é seguida a sequência de campos em ambas as instruções, como na regra que aprendemos da instrução INSERT. Também não se esqueça do ponto e vírgula no final da última instrução. Imprescindível!

Mas por exemplo, se eu quiser importar os dados de duas tabelas para uma terceira tabela como seria? Eu posso descriminar os campos que desejo importar?

Sim, você pode fazer qualquer SELECT, descriminando os campos e usando duas tabelas. O importante é que o número dos campos que você retorne e os tipos do mesmo tenham correspondência com os campos que você especificar no INSERT.

No exemplo a seguir, estou inserindo na TABELA_ALVO, dados de duas tabelas: CLIENTE e DEPARTAMENTO, sendo que os campos NOME e IDADE vem de Cliente.Nome e Cliente.Idade e DEPARTAMENTO vem de Departamento.Nome_Dept

 INSERT INTO TABELA_ALVO(NOME, IDADE, DEPARTAMENTO) SELECT CLI.NOME, CLI.IDADE, DEP.NOME_DEPT FROM CLIENTE CLI, DEPARTAMENTO DEP WHERE CLI.NUM_DEPT = DEP.NUM_DEPT 

Também podemos fazer o exemplo acima utilizando JOIN desta forma:

 INSERT INTO TABELA_ALVO(NOME, IDADE, DEPARTAMENTO) SELECT CLI.NOME, CLI.IDADE, DEP.NOME_DEPT FROM CLIENTE CLI INNER JOIN DEPARTAMENTO DEP ON CLI.NUM_DEPT = DEP.NUM_DEPT 

Esta técnica é muito utilizada para fechamento do mês, onde a qualquer momento você precise dos dados rapidamente para gerar um gráfico de demonstração de resultados, um auxiliar para gerar SPED, ou seja, seu uso pode servir para vários fins, depende da sua necessidade.

Se tiverem sugestões, duvidas ou reclamações comentem... e  bons estudos!!!

Veja Também:

Artigos Relacionados a categoria: MySql

Olá, deixe seu comentário para Insert a partir de um Select no MySql

Enviando Comentário Fechar :/

...AINDA NÃO VIU NOSSO PORTFÓLIO?

Se ainda não viu nosso Portfólio e quer conhecer um pouco mais... aproveite e veja agora mesmo e tenha um site de qualidade para o seu negócio!

[contato]
Ver o Portfólio Agora