SamuelPaz 0 Denunciar post Postado Agosto 24, 2010 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
giesta 29 Denunciar post Postado Agosto 24, 2010 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
GabrielFerrari 41 Denunciar post Postado Agosto 24, 2010 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
SamuelPaz 0 Denunciar post Postado Agosto 24, 2010 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
EuToComProblema! 1 Denunciar post Postado Agosto 24, 2010 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
SamuelPaz 0 Denunciar post Postado Agosto 24, 2010 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
EuToComProblema! 1 Denunciar post Postado Agosto 24, 2010 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
giesta 29 Denunciar post Postado Agosto 24, 2010 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