Ir para conteúdo

Arquivado

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

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

Compartilhar este post


Link para o post
Compartilhar em outros 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');

 

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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';

 

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por FabianoSouza
      Eu preciso exibir duas informações em minha consulta:
      1) A quantidade de pessoas inscritas numa turma de treinamento (isso é feito com um simples COUNT)
      2) Uma flag de excesso de inscrições na turma. Seria obtido pela comparação entre a quantidade máxima permitida (já existe esse campo) e o COUNT feito acima.
       
      Até aqui sem problemas.
       
      O que quero é evitar fazer duas contagens (1 para saber a quantidade de inscritos, e outra para gerar a flag de excesso de inscrições).
       
      Há uma forma de utilizar UMA contagem para atender as duas necessidades?
       
      Meu código está assim:
       
      ... --AQUI FAZ A COMPARAÇÃO PARA GERAR A FLAG DE EXCESSO DE INSCRIÇÕES , CASE WHEN (SELECT COUNT(*) FROM dbo.tab AS ITT WHERE ITT.codTurmaDeTreina = T.id) > T.lotacaoMax Then T.nome + '&nbsp;'+'<span class=%22icon-aviso fcolor-critico%22 style=%22font-size:18px%22 title=Excesso&nbsp;de&nbsp;inscrições></span>' --AQUI FAZ A CONTAGEM DE INSCRIÇÕES , (SELECT COUNT(*) FROM dbo.tab AS ITT WHERE ITT.codTurmaDeTreina = T.id) AS 'Inscrições'  
    • Por babylon
      Olá galera tudo bem?
      Deixa eu perguntar, estava mexendo no meu site e queria adicionar em html essa tabela porem esta dando erro pois fica assim:
       

      Porem gostaria que ficasse assim:

      Segue o código da tabela:
      <center><table border="0">
          <tr>
      <td bgcolor="#0092df" width="24%"><a href="/categorias?ename=smartphones"><span style="font-size: 20px; color: #ffffff;"><b> <font color="#0092df">..</font>Bicicleta<br> <font color="#0092df">..</font>Track Bikes<br> <font color="#0092df">..</font>Aro 29 TKS</b></a></span><br><br><font size="5"><center><span style="background-color: #A1CD44">DE:</span></font> <br><font size="5"><s>R$ 1.999,99</center></font></s> </td><td><p><a href="/categorias?ename=smartphones"><img src="/static/img/itembicicleta.jpg"><br><font size="5"><center><span style="background-color: #A1CD44">COM - 60%:</span></font> <br><font size="5">1.199,99</font></center></a></td>
             <td><font color="#ffffff">....</font></td>
              <td bgcolor="#0092df" width="24%"><a href="/categorias?ename=smartphones"><span style="font-size: 20px; color: #ffffff;"><b> <font color="#0092df">..</font>Monitor 24"<br> <font color="#0092df">..</font>Samsung<font color="#0092df">aa.aa</font><br> <font color="#0092df">..</font>1ms 144hz</b></a></span></center></td><td><p><a href="/categorias?ename=smartphones"><img src="/static/img/itemmonitor.jpg"></a></td>
          </tr>
          </table></center>
      O que estaria errado, pois não sei como colocar nessa tabela outro fundo de outra cor, veja que usei td bgcolor="#0092df" para o azul escuro mas não sei como usaria pro "#e4f1fb" para o fundo ficar de azul claro em baixo bem como não ficou correto em altura o "DE:" com o "COM - 60%:".
      Bom é isso, obg.


    • Por FabianoSouza
      Possuo uma coluna de data.
      Eu gostaria que os registros com datas futuras aparecessem no topo do meu select, em relação aos demais registros.
      Em seguida, gostaria que somente esses registros com datas futuras ficassem em ordem crescente.
      Algo como 
       
      João  | 16/11/2023
      Maria | 17/11/2023
      José  |  20/11/2023
       
      -----------------------------
      (demais registros da base)
      Antônio   |  20/05/2023
      Rosa        | 15/08/2023
      Cida         | 15/10/2022
      Pedro      |  20/05/2021
      Paulo      |  14/11/2020
       
      O select seria esse.
      select dbo.formataData(ET.dataInicial) AS 'data' FROM dbo.tab AS ET GROUP BY ET.dataInicial  
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
×

Informação importante

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