Ir para conteúdo

POWERED BY:

Arquivado

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

mwitte

[Resolvido] Somar valores de varias querys pelo FOR

Recommended Posts

Caros,

 

Tenho o seguinte codigo:

for ( $i = 1 ; $i <= 12 ; ++$i ){
$sql = sprintf( 'SELECT * FROM ticket WHERE ticket_mes=%d AND ticket_ano=%s' , $i , $get_ano );
$query = mysql_query( $sql ) or die( mysql_error() );
$total = mysql_num_rows( $query );
	echo '<td>'.$total.'</td>';
}

O que retorna o seguinte resultado:

 

Imagem Postada

 

 

A grande duvida é; como eu faço a sumarização das quantidades mes a mes para fechar o ano?

Ex.:

Mes: 1 2 3 4 5 6 7 8 9 10 11 12

Chamados: 521 12 0 0 0 0 0 0 0 0 0 0

Total Chamados: 533

 

Cordialmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, acho que dá pra fazer tudo isto com uma consulta só, utilizando GROUP BY WITH ROLLUP.

 

http://dev.mysql.com/doc/refman/5.0/en/group-by-modifiers.html

 

Se quiser fazer só com uma consulta e tiver dificuldade, posso mover seu tópico para o fórum de MySQL.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, acho que dá pra fazer tudo isto com uma consulta só, utilizando GROUP BY WITH ROLLUP.

 

http://dev.mysql.com/doc/refman/5.0/en/group-by-modifiers.html

 

Se quiser fazer só com uma consulta e tiver dificuldade, posso mover seu tópico para o fórum de MySQL.

 

Carlos Eduardo

 

A idéia é boa, mas no meu caso não funciona, pois na verdade eu "conto" a quantidade de registros através do filtro da query e, no exemploque você passou, eu teria que ter campos já com algum valor para que a query sumarizasse.

 

O FOR me ajudou muito no que diz respeito a repetição de scripts, ou seja, não preisarei ficar repetindo cada query para trazer o resultado, mas por outro lado, a sumarização foi afetada e eu ainda não consegui pensar em algo.

 

Ó script cruel!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou, obrigado!

 

$sql = 'SELECT *, SUM(ticket_id) FROM ticket WHERE ticket_ano=2010 GROUP BY ticket_id WITH ROLLUP';
$query = mysql_query( $sql ) or die( mysql_error() );
$total = mysql_num_rows( $query );
	echo 'Total: '.$total.'';

 

Eu estava montando a query errado.

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só não entendi porque no resultado ele incrementa mais um.

 

Ex.:

SELECT * FROM ticket WHERE ticket_ano=2010 

Total: 534

 

SELECT *, SUM(ticket_id) FROM ticket WHERE ticket_ano=2010 GROUP BY ticket_id WITH ROLLUP

Total: 535

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta tirar esse group by e o with rollup.

 

 

Heheheh, tava fazendo isso quando você respondeu, valeu pelo Help!

Ficou assim.

$sql = 'SELECT *, SUM(ticket_id) FROM ticket WHERE ticket_ano=2010 GROUP BY ticket_id';

$query = mysql_query( $sql ) or die( mysql_error() );
$total = mysql_num_rows( $query );
	echo 'Total: '.$total.'';

 

Só mais uma pergunta, como eu encerro esse post, tipo, colocar o Resolvido no inicio oo POST.

 

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, pode até ter resolvido, mas continuo dizendo. Não é a melhor forma. Faça o teste com esta consulta, mas fora de qualquer laço.

 

SELECT *, SUM(ticket_id) AS somaTicket FROM ticket WHERE ticket_ano = 2010 GROUP BY ticket_mes WITH ROLLUP

Realize esta consulta direto no banco de dados (PHPMyAdmin ou MySQL Query Browser ou MySQL Workbench). Veja se o retorno não é exatamente o que você precisa.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, pode até ter resolvido, mas continuo dizendo. Não é a melhor forma. Faça o teste com esta consulta, mas fora de qualquer laço.

 

SELECT *, SUM(ticket_id) AS somaTicket FROM ticket WHERE ticket_ano = 2010 GROUP BY ticket_mes WITH ROLLUP

Realize esta consulta direto no banco de dados (PHPMyAdmin ou MySQL Query Browser ou MySQL Workbench). Veja se o retorno não é exatamente o que você precisa.

 

Carlos Eduardo

 

Carlos,

 

Funciona, só que quando eu retiro o WITH ROLLUP ele conta menos um registro, ex:

 

SELECT *, SUM(ticket_id) AS somaTicket FROM ticket WHERE ticket_ano = 2010 GROUP BY ticket_id WITH ROLLUP

Total de registros: 535

 

Agora,

 

SELECT *, SUM(ticket_id) AS somaTicket FROM ticket WHERE ticket_ano = 2010 GROUP BY ticket_id

Total de registros: 534 <<<< que é a quantidade exata!!!

 

Não entendi o porque, mas como você me parece mais sábio na questão de SQL, cria um pequeno BD e faz o teste.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, ele cria uma linha a mais, que é a linha que faz a soma de todos os registros. Este comando faz o agrupamento e a soma.

 

Fica difícil de explicar. Faça o seguinte. Execute este SQL diretamente no banco de dados (PHPMyAdmin ou MySQL Query Browser ou ainda MySQL Workbench). Veja como fica o retorno.

 

Se não aparecer como esperado, poste aqui a estrutura das tabelas e, se possível, alguns dados. Farei os testes e monto a query para você.

 

Carlos Eduardo

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.