• 0
Sign in to follow this  
zandotc

MYSQL COUNT e IF?

Question

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 também não consegui

 

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

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

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

Share this post


Link to post
Share on other sites
  • 0

Use 

SUM( IF(dataretorno IS NOT NULL, 1, 0)) 

em vez de

SUM( CASE WHEN dataretorno IS NOT NULL THEN 1 ELSE 0 END) 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this