mwitte 0 Denunciar post Postado Fevereiro 3, 2010 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: 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
Matias Rezende 50 Denunciar post Postado Fevereiro 3, 2010 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
mwitte 0 Denunciar post Postado Fevereiro 3, 2010 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
Matias Rezende 50 Denunciar post Postado Fevereiro 3, 2010 Não entendi qual o problema de usar o ROLLUP e porque não funcionaria no seu caso. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
The XeoN 0 Denunciar post Postado Fevereiro 3, 2010 Simples: $sql = sprintf( 'SELECT SUM(chamados) FROM ticket WHERE ticket_mes=%d AND ticket_ano=%s' , $i , $get_ano ); Compartilhar este post Link para o post Compartilhar em outros sites
mwitte 0 Denunciar post Postado Fevereiro 3, 2010 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
The XeoN 0 Denunciar post Postado Fevereiro 3, 2010 Nada, tamo ai ;D Compartilhar este post Link para o post Compartilhar em outros sites
mwitte 0 Denunciar post Postado Fevereiro 3, 2010 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
The XeoN 0 Denunciar post Postado Fevereiro 3, 2010 tenta tirar esse group by e o with rollup. Compartilhar este post Link para o post Compartilhar em outros sites
mwitte 0 Denunciar post Postado Fevereiro 3, 2010 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
The XeoN 0 Denunciar post Postado Fevereiro 3, 2010 O moderador que coloca. Falous ;D Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Fevereiro 3, 2010 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
mwitte 0 Denunciar post Postado Fevereiro 4, 2010 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
Matias Rezende 50 Denunciar post Postado Fevereiro 4, 2010 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