Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

SamuelPaz

criar tabela a partir de uma consulta

Recommended Posts

Olá pessoal, tenho uma tabela (uma espécie de controle patrimonial) para cadastro de equipamentos de informática (ex: core 2 duo 1.6 GHz | hd 500 GB | 2 GB RAM). Acontece que existem vários registros idênticos, porque obviamente existem vários computadores iguais.

 

Depois de dois anos de uso, o chefe percebeu que (como havíamos sugerido desde o início) é melhor o usuário cadastrar um equipamento e informar a quantidade, atualizando essa informação sempre que houver mudança.

 

Pois bem. Aqui está meu problema: preciso fazer uma consulta que agrupe os equipamentos iguais e os conte. Isso eu já fiz. Falta agora exportar esses dados para a nova tabela, mais simplificada (menos campos). Como faço isso?

 

Pensei até em fazer na própria aplicação, mas não seria eficiente porque, com o tempo, as consultas podem ficar lentas devido ao grande número de dados.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

create table banco.tabela_nova

select campo1,campo2,campo3 from banco.tabela_velha

 

OBS:eu nao creio que manter a tabela agrupada seja melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A nível de curiosidade.

Não é o seu caso pelo que descreveu mas para criar uma tabela dinamicamente da para usar o prepare/execute

 

set @comando = 'create table nome ( campo1 int, campo2 varchar(45) );';
prepare comando from @comando;
execute comando;

Se estiver usando procedure ou uma rotina...

talvez até de para encaixar isso ae.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou explicar melhor.

 

Preciso pegar o resultado da consulta e alimentar a tabela nova com esses dados.

O select que fiz (e que funciona) foi esse:

 

SELECT codom, cl_cod, eqp_tipo_cod, mdl_cod, fabricante_cod, count(*) as 'qnt'
FROM EQUIPAMENTO
group by codom, cl_cod, eqp_tipo_cod, mdl_cod, fabricante_cod

Agora preciso alimentar a outra tabela com esses dados entendem?

Compartilhar este post


Link para o post
Compartilhar em outros sites

essa sua tabela que deve ser alimentada... não te serve criar um view?

 

é praticamente o que você quer. uma view é quase uma tabela, que é populada em tempo de execução pelo sql nela definido...

 

dah uma procurada a respeito.

 

mas se pretende substituir a tabela... não entendi pq não poderia ser na aplicação. não seria algo de fazer apenas uma vez e pronto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

essa sua tabela que deve ser alimentada... não te serve criar um view?

 

é praticamente o que você quer. uma view é quase uma tabela, que é populada em tempo de execução pelo sql nela definido...

 

dah uma procurada a respeito.

 

mas se pretende substituir a tabela... não entendi pq não poderia ser na aplicação. não seria algo de fazer apenas uma vez e pronto?

 

Precisa ser alimentada porque, da forma que funciona hoje, os equipamentos são cadastrados um a um. A partir dessa mudança o usuário só vai precisar alterar a quantidade (por isso agrupei e contei os registros iguais)

Compartilhar este post


Link para o post
Compartilhar em outros sites

e a view não te resolve?

 

mysql> CREATE TABLE t (qty INT, price INT);
mysql> INSERT INTO t VALUES(3, 50);

mysql> CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;

mysql> SELECT * FROM v;
+------+-------+-------+
| qty  | price | value |
+------+-------+-------+
|    3 |    50 |   150 |
+------+-------+-------+

MySQL Views

Compartilhar este post


Link para o post
Compartilhar em outros sites

create table EQUIPAMENTOS_RESUMIDO

SELECT codom, cl_cod, eqp_tipo_cod, mdl_cod, fabricante_cod, count(*) as 'qnt'

FROM EQUIPAMENTO

group by codom, cl_cod, eqp_tipo_cod, mdl_cod, fabricante_cod

 

 

 

 

 

 

 

simples assim...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.