Jump to content
Marcelo Pereira da Costa

Como armazenar retornos de alguns select count(*) em uma tabela

Recommended Posts

Boa Dia pessoal

Preciso de uma ajuda

Eu tenho 3 tabelas (tab1, tab2 e tba3) em que preciso contar o numero de registros (reg1, reg2 e reg3) de cada uma delas, e estes registros devem ser armazenados em uma outra tabela (TabInfo)

 

A contagem pode ser feito com o SELECT COUNT(*), mas o meu problema é adicionar estes registros na nova tabela (TabInfo).

 

               TabInfo

___________________________

campo1  campo2  campo3

___________________________

    reg1         reg2        reg3 

 

Muito obrigado pessoal

Share this post


Link to post
Share on other sites

Você pode fazer da seguinte forma:

INSERT INTO TabInfo (campo1  , campo2 , campo3 ) VALUES (
    (SELECT count(reg1) FROM tab1), 
    (SELECT count(reg2) FROM tab1), 
    (SELECT count(reg3) FROM tab1))

Ou criar uma procedure:

DELIMITER $$
CREATE PROCEDURE sp_teste(IN tab_name VARCHAR(250))
BEGIN

  SET @GetName = CONCAT('
INSERT INTO TabInfo (campo1  , campo2 , campo3 ) VALUES (
    (SELECT count(reg1) FROM ',tab_name, '), 
    (SELECT count(reg2) FROM ',tab_name, '), 
    (SELECT count(reg3) FROM ',tab_name, ') )');
  PREPARE stmt FROM @GetName;
  EXECUTE stmt;
END $$
DELIMITER ;

para testar a procedure:

call sp_teste('tab1');

 

Share this post


Link to post
Share on other sites
18 minutos atrás, kim.y disse:

Você pode fazer da seguinte forma:


INSERT INTO TabInfo (campo1  , campo2 , campo3 ) VALUES (
    (SELECT count(reg1) FROM tab1), 
    (SELECT count(reg2) FROM tab1), 
    (SELECT count(reg3) FROM tab1))

Ou criar uma procedure:


DELIMITER $$
CREATE PROCEDURE sp_teste(IN tab_name VARCHAR(250))
BEGIN

  SET @GetName = CONCAT('
INSERT INTO TabInfo (campo1  , campo2 , campo3 ) VALUES (
    (SELECT count(reg1) FROM ',tab_name, '), 
    (SELECT count(reg2) FROM ',tab_name, '), 
    (SELECT count(reg3) FROM ',tab_name, ') )');
  PREPARE stmt FROM @GetName;
  EXECUTE stmt;
END $$
DELIMITER ;

para testar a procedure:


call sp_teste('tab1');

 

 

Muito obrigado Kim.

Resolvido com a sua primeira proposta. Não precisei criar um procedure.

Share this post


Link to post
Share on other sites
2 minutos atrás, Marcelo Pereira da Costa disse:

 

Muito obrigado Kim.

Resolvido com a sua primeira proposta. Não precisei criar um procedure.

Kim, tem como você me ajudar em mais uma dúvida?

 

Eu preciso armazenar o numero de repetições de um registro (que tem 2 campos) de uma determinada tabela (TabelaA),  em um campo (Num_rep) de uma outra tabela (TabelaB).

Os campos da TabelaA são CPF e MAT.

 

A forma de determinar o numero de repetições é :

 

select CPF, MAT, count(*)
from TabelaA

group by CPF, MAT
having count(*) > 1

 

Mas como faço para colocar este numero de repetições em um campo (Num_rep) na TabelaB é que estou tendo dificuldade, agradeceria a ajuda.

Share this post


Link to post
Share on other sites
4 minutos atrás, Marcelo Pereira da Costa disse:

Kim, tem como você me ajudar em mais uma dúvida?

 

Eu preciso armazenar o numero de repetições de um registro (que tem 2 campos) de uma determinada tabela (TabelaA),  em um campo (Num_rep) de uma outra tabela (TabelaB).

Os campos da TabelaA são CPF e MAT.

 

A forma de determinar o numero de repetições é :

 

select CPF, MAT, count(*)
from TabelaA

group by CPF, MAT
having count(*) > 1

 

Mas como faço para colocar este numero de repetições em um campo (Num_rep) na TabelaB é que estou tendo dificuldade, agradeceria a ajuda.

 

E este campo (Num_rep) esta em um determinado registro.

Logo, teria que colocar em um registro em que um outro campo (Reg) tem o valor 10.

 

Eu tentei

 


UPDATE  TabelaB
SET Num_rep= (select CPF, MAT, count(*) from TabelaA group by CPF, MAT having count(*) > 1)
WHERE Reg='10';

 

Share this post


Link to post
Share on other sites
1 minuto atrás, Marcelo Pereira da Costa disse:

 

E este campo (Num_rep) esta em um determinado registro.

Logo, teria que colocar em um registro em que um outro campo (Reg) tem o valor 10.

 

Eu tentei

 


UPDATE  TabelaB
SET Num_rep= (select CPF, MAT, count(*) from TabelaA group by CPF, MAT having count(*) > 1)
WHERE Reg='10';

 

O problema é que você está setando 1 valor e no seu select está resultando em 3.

 

Isso é exercício de faculdade? Qualquer coisa te ajudo por MP e te envio algum material que eu tenho aqui.

Share this post


Link to post
Share on other sites
1 minuto atrás, kim.y disse:

O problema é que você está setando 1 valor e no seu select está resultando em 3.

 

Isso é exercício de faculdade? Qualquer coisa te ajudo por MP e te envio algum material que eu tenho aqui.

Não é trabalho de faculdade não.

É que sou novato nesta área e me pediram para colocar em uma tabela (tabela B) em um campo (Num_rep) de um determinado registro .(Reg, em que o valor é 10).

E que este dado a ser colocado seria  o numero de repetições de registros (este registro só tem estes campos: CPF e MAT), mas de uma outra tabela (Tabela A).

Não sei se fui claro nesta duvida.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By OSVALDO ARANTES JÚNIOR
      Boa tarde,  estou desenvolvendo uma consulta no php/mysql em diversas colunas. E gostaria de saber
      se existe um caracter especial para listar todos os dados, minha quere esta organizada da seguinte forma
       
      $query = sprintf("SELECT * FROM operacao  WHERE data_operacao BETWEEN '$data_inicial_rel' AND '$data_final_rel' AND estado_operacao = ' ' ORDER BY id_operacao ASC ;");
       
      quando declaro o valor do estado_operacao ele lista perfeitamente o valor, agora minha dúvida é se existe um 
      carater para listar todos os valores... para que eu use como value no opition do select, passar o valor TODOS pra a query
       
      desde já agradeço a atenção.
    • By RX3Info
      Boa Tarde!
      Pessoal,
      Estou precisando realizar um cálculo dentro de uma select, mas não estou conseguindo, segue abaixo a select sem as operações e um exemplo (que não funcionou) logo abaixo:
       
      Este código está funcionando:
      select A.CODPRODUTO, A.LOTE, A.QTD, A.`LOCAL`, A.OT, A.ALTUSU, A.ALTMOM, B.CODPRODUTO, B.DESCRICAO, B.CUSTO, C.ICMS_VALOR, C.IPI_VALOR, C.COFINS_VALOR, C.QTD from proqtd as A inner join produto as B on a.CODPRODUTO = B.CODPRODUTO inner join nfeprodu as C on B.CODPRODUTO = C.PRODUTO  
      Este não funciona e da erro devido ao cálculo.
      select A.CODPRODUTO, A.LOTE, A.QTD, A.`LOCAL`, A.OT, A.ALTUSU, A.ALTMOM, B.CODPRODUTO, B.DESCRICAO, (B.CUSTO, - C.ICMS_VALOR, - C.IPI_VALOR, - C.COFINS_VALOR, / C.QTD) as CustoSemImpostos from proqtd as A inner join produto as B on a.CODPRODUTO = B.CODPRODUTO inner join nfeprodu as C on B.CODPRODUTO = C.PRODUTO  
      O que eu preciso é o seguinte, que me traga os itens com os valores sem os impostos, veja acima que a tentativa está sendo de pegar o valor de custo de um item, subtrair os impostos e dividir pela quantidade em estoque, desta forma, tenho o valor da unidade de cada item sem os impostos, mas não estou conseguindo.
       
      Se alguém puder me ajudar com um exemplo, ficarei muito agradecido.
      Obrigado!
       
    • By iguulima
      É possivel realizar uma consulta SQL em duas colunas da mesma tabela usando outra função que não seja o AND ou OR? Segue o meu Select ate agora:
       
      (SELECT * FROM product WHERE comid = $idcom AND status = 'Ativo' AND categ = $category AND nameprod like'%$search%'  ORDER BY id DESC)  
      Por exemplo se eu colocar um AND após buscar o nameprod, no nome do produto não tiver a palavra chave ele também não irá buscar. Ou se colocar um OR ele anulo as outras condições até onde eu sei.
      Iniciante em programação.
    • By lezão
      Boa noite!
      Td bem com vcs?
      Estou usando esse código mas não retorna nada!
       
      Alguém pode me ajudar ?
       
       
      <?php $sql = mysqli_query($link, "SELECT ver_post, COUNT(ver_post) AS Quantidade FROM tab_comentarios where ver_post = 'red' Group by ver_post"); ?> Variável
      <?php echo $Quantidade; ?>  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.