Ir para conteúdo

Arquivado

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

Elizandro Oliveira

Consulta com COUNT e IF

Recommended Posts

Boa Tarde,

 

Tenho as seguintes queries:

 

//Pega o total de produtos da familia. Ex 25

$query ="SELECT *, COUNT(familia) as total from cadastro group by familia";
$executa=mysql_query($query);
$a=mysql_fetch_array($executa);

 

//Pega o total de produtos já fabricados com base na data de retorno;
$queryb ="SELECT COUNT(familia) as pronto from cadastro where dataretorno<>'0000-00-00 00:00:00' group by familia";
$executab=mysql_query($queryb);
$b=mysql_fetch_array($executab);

 

//Pega o total de produtos em produção com base na data de retorno.

$queryc ="SELECT COUNT(familia) as producao from cadastro where dataretorno='0000-00-00 00:00:00' group by familia";
$executac=mysql_query($queryc);
$c=mysql_fetch_array($executac);

 

Problema está que ele retorna, apenas de uma família, pois não está em um while nem nada. Tentei usar um IF na consulta mas não obtive sucesso.

 

Exemplo de dados gravados:

 

familia              dataretorno                        

C2-2018       0000-00-00 00:00:00

C2-2018       2018-02-02 00:00:00

C3-2018       2018-02-03 00:00:00

C4-2018       2018-02-05 00:00:00

C5-2018       2018-02-07 00:00:00

C5-2018       2018-02-07 00:00:00

C5-2018       0000-00-00 00:00:00

 

Saida MYSQL agrupando por família

 

familia              dataretorno                   pronto           producao          total       

C2-2018       0000-00-00 00:00:00                1                       1                        2

C3-2018       2018-02-03 00:00:00                1                       0                        1

C4-2018       2018-02-05 00:00:00                1                       0                        1

C5-2018       2018-02-07 00:00:00                2                       1                        3

 

Como poderia fazer isso usando apenas uma querie, tentei com sub selects tbm naum consegui

 

Muito obrigado pela atenção e colaboração.

 

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido usando:

 

SELECT familia, SUM( CASE WHEN dataretorno ="0000-00-00 00:00:00" THEN 1 ELSE 0 END) AS producao, SUM( CASE WHEN dataretorno <>"0000-00-00 00:00:00" THEN 1 ELSE 0 END) AS pronto, SUM( CASE WHEN dataretorno IS NOT NULL THEN 1 ELSE 0 END) AS total FROM cadastro group by familia

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • 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
    • Por Rodrigo Bigas
      Olá colegas, 
      Desenvolvi um sistema simples de boletim escolar. Conforme os dados são inseridos nas textfields ao clicar no botão Resultado, deverá mostrar em uma JTable. O problema é que a última coluna (resultado) da JTable tem que estar dentro de uma condição if/else para setar se o aluno está "aprovado", "em recuperação" ou "reprovado conforme a condição". Estou com dificuldades em descobrir qual é o método correto que seta este resultado de forma dinâmica. Segue os prints:
       
      Conforme o código e o print acima, o sistema funciona somente para a primeira linha, porque está setando de forma estática, obtendo os valores do índice e coluna, qual seria o método para setar o valor de forma dinâmica do índice e coluna?
    • Por stefanyprs
      //modelo.html <!DOCTYPE html> <html lang="pt-br"> <head>     <meta charset="UTF-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Hora do dia</title>     <link rel="stylesheet" href="estilo.css"> </head> <body onload="carregar()">     <header>         <h1> Hora do dia </h1>         </h1>     </header>     <section>         <div id="msg">             msg         </div>         <div id="foto">             <img class="imagem" src="fotomanha.jpg" alt="foto do dia">         </div>     </section>     <footer>         <p>&copy; Rodapé </p>     </footer>     <script src="script.js"></script> </body> </html>   //script.js function carregar () {     var msg = window.document.getElementById('msg')     var img  = window.document.getElementsByClassName('imagem')      var data = new Date()     var hora = data.getHours()          msg.innerHTML = 'Agora são ' + hora + ' horas'          if (hora >= 0 && hora < 12){         //Bom dia         img.src = 'fotomanha.jpg'         } else if (hora >= 12 && hora < 18){         //Boa tarde         img.src = 'fototarde.jpg'      } else {         //Boa noite         img.src = 'fotonoite.jpg'     } }   //estilo.css body{     background-color: aqua;     font: normal 15pt Arial; } header{     color:rgb(255, 255, 255);     text-align: center; } section{     background: white;     border-radius: 10px;     padding: 15px;     width: 500px;     margin:auto;     box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.329);      } footer{     color:white;     text-align: center;     font-style: italic;   } div{     text-align: center; } .imagem{     width: 500px;    /* largura da imagem */     height: 350px;   /*  altura da imagem  */     margin-top: 10px; /* margem do topo */ }
    • Por lucianfpaula
      Galera tenha a seguinte duvida, tenho 3 tabelas onde estou trazendo os dados e preciso fazer um count em uma delas
       
      SELECT *  FROM tabela1 AS t1  INNER JOIN tabela2 AS t2 ON t1.idt1 = t2.idt2 INNER JOIN tabela3 AS t3 ON t3.idt3 = t1.idt1  
      a duvida é: quero manter o SELECT * mas também preciso de COUNT(t3.idT3)
      não sei se é possível fazer isso, mas gostaria de ter certeza antes de focar em outra solução
      desde já muito grato.
×

Informação importante

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