Ir para conteúdo

POWERED BY:

Arquivado

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

Martinson Freitas

Pesquisa total de registros por ano

Recommended Posts

Olá Pessoal!

 

Estou tentando fazer um gráfico com o resultado total de credenciais emitidas durante os anos de 2011 até 2015. Onde o eixo Y será o total das credenciais fornecidas e X será o eixo dos anos.

 

Através do código abaixo eu consigo o resultado tranquilamente. Minha pergunta é a seguinte: Tem uma maneira de dinamizar esse código fazendo com que eu não tenha que informar os anos, sei que posso fazer um while com i variando, mas me enrolei todo...

 

Aproveitando a oportunidade, a pesquisa não poderia ficar limitada com o ano do sistema, tipo DT_SOLICITACAO = date("Y")... Também não consegui pegar essa lógica...

 

Abaixo segue o código que deu certo:

 

/* inicio

 

Abre_Conexao();

$res_2011 = mysql_query("SELECT COUNT(*) as Total_2011 FROM credencial_tb WHERE DT_SOLICITACAO BETWEEN '2011-01-01' AND '2011-12-31' ;");
$num = mysql_fetch_array($res_2011);

$res_2012 = mysql_query("SELECT COUNT(*) as Total_2012 FROM credencial_tb WHERE DT_SOLICITACAO BETWEEN '2012-01-01' AND '2012-12-31' ;");
$num2 = mysql_fetch_array($res_2012);

$res_2013 = mysql_query("SELECT COUNT(*) as Total_2013 FROM credencial_tb WHERE DT_SOLICITACAO BETWEEN '2013-01-01' AND '2013-12-31' ;");
$num3 = mysql_fetch_array($res_2013);

$res_2014 = mysql_query("SELECT COUNT(*) as Total_2014 FROM credencial_tb WHERE DT_SOLICITACAO BETWEEN '2014-01-01' AND '2014-12-31' ;");
$num4 = mysql_fetch_array($res_2014);

$res_2015 = mysql_query("SELECT COUNT(*) as Total_2015 FROM credencial_tb WHERE DT_SOLICITACAO BETWEEN '2015-01-01' AND '2015-12-31' ;");
$num5 = mysql_fetch_array($res_2015);

echo "Numeros de registros " . $num['Total_2011'] ."<br />\n\n";
echo "Numeros de registros " . $num2['Total_2012'] ."<br />\n\n";
echo "Numeros de registros " . $num3['Total_2013'] ."<br />\n\n";
echo "Numeros de registros " . $num4['Total_2014'] ."<br />\n\n";
echo "Numeros de registros " . $num5['Total_2015'] ."<br />\n\n";

 

/* fim

 

Será que usando "case" dá certo?

 

Abraços e agradeço a ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT 'table_1' AS table_name, COUNT(*) FROM tb_name
UNION ALL
SELECT 'table_2' AS table_name, COUNT(*) FROM tb_name
UNION ALL
SELECT 'table_3' AS table_name, COUNT(*) FROM tb_name
UNION ALL
SELECT 'table_5' AS table_name, COUNT(*) FROM tb_name
UNION ALL
SELECT 'table_5' AS table_name, COUNT(*) FROM tb_name

As condições da where continuam a mesma, só estudar agora! :P

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu vou fazer os testes aqui...

 

Abraços!

 

 

Então Willian não utilizei o Union pois pelo que postei anteriormente a tabela é a mesma, então mantive o código anterior e utilizei um artifício para implementar a porcentagem na altura das colunas do meu gráfico...

 

Ficou bom! Agradeço a ajuda... abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, não sei se notou, mas coloquei um alias ali para cada condição da clausula where, ou seja são resultados totalmente diferentes, e uma unica busca no db, do modo antigo são cinco. :thumbsup:

SELECT 'table_1' AS table_name, COUNT(*) FROM credencial_tb WHERE DT_SOLICITACAO BETWEEN '2011-01-01' AND '2011-12-31'
UNION
SELECT 'table_2' AS table_name, COUNT(*) FROM credencial_tb WHERE DT_SOLICITACAO BETWEEN '2012-01-01' AND '2012-12-31'
UNION
SELECT 'table_3' AS table_name, COUNT(*) FROM credencial_tb WHERE DT_SOLICITACAO BETWEEN '2013-01-01' AND '2013-12-31'
UNION
SELECT 'table_5' AS table_name, COUNT(*) FROM credencial_tb WHERE DT_SOLICITACAO BETWEEN '2014-01-01' AND '2014-12-31'
UNION
SELECT 'table_5' AS table_name, COUNT(*) FROM credencial_tb WHERE DT_SOLICITACAO BETWEEN '2015-01-01' AND '2015-12-31'

Depois é só usar while, enfim é isso ae.

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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