mwitte 0 Denunciar post Postado Abril 28, 2010 Ola grandes colegas, estou eu aqui novamente buscando um help para uma questão que me parece simples, mas não estou conseguindo resultados práticos no forma que desejo. Seguem os exemplos. O Código: include("includes/all_conn.php"); $ano = '2010'; $query = mysql_query('SELECT * FROM tbl_ticket WHERE ticket_ano="2010" GROUP BY ticket_empresa_id LIMIT 20') or die(mysql_error()); $total = mysql_num_rows( $query ); while ($row0 = mysql_fetch_assoc($query)) { $a = $row0['ticket_empresa_id']; $sqlq = sprintf('SELECT * FROM tbl_ticket WHERE ticket_empresa_id=%s AND ticket_ano=%s',$a,$ano); $queryq = mysql_query( $sqlq ) or die( mysql_error() ); $totalq = mysql_num_rows( $queryq ); echo 'Id: '.$a.' - Total: '.$totalq.'<br>'; } O Resultado: Id: 1000 - Total: 11 Id: 1001 - Total: 61 Id: 1002 - Total: 4 Id: 1003 - Total: 15 Id: 1004 - Total: 79 Id: 1006 - Total: 28 Id: 1007 - Total: 1 Id: 1008 - Total: 4 Id: 1009 - Total: 7 Id: 1010 - Total: 3 Id: 1011 - Total: 10 Id: 1012 - Total: 178 Id: 1013 - Total: 13 Id: 1014 - Total: 30 Id: 1015 - Total: 1 Id: 1016 - Total: 6 Id: 1017 - Total: 9 Id: 1018 - Total: 5 Em suma, esse resultado seria um TOP20, mas retornaria do maior valor para o menor, e isso não estou conseguindo por nada :( Então meus caros, conto mais uma vez com um Help de VCs. Grato Michel de Witte Compartilhar este post Link para o post Compartilhar em outros sites
Jaime_Pinheiro 0 Denunciar post Postado Abril 28, 2010 ORDER BY tabela.coluna DESC Obs: ORDER BY é a última cláusula. Após este, somente use LIMIT. SELECT FROM WHERE GROUP BY ORDER BY LIMIT Compartilhar este post Link para o post Compartilhar em outros sites
Ricardoo Lima 0 Denunciar post Postado Abril 28, 2010 Você já tentou usar o ORDER BY (o campo pelo qual você quer ordenar) ASC(crescente) ou DESC(decrescente) no seu SQL? Compartilhar este post Link para o post Compartilhar em outros sites
mwitte 0 Denunciar post Postado Abril 28, 2010 Ricardo e Jaime, obrigado pela ajuda, mas acho que vcs não leram o codigo ou não entenderam o problema. ORDER BY realmente ajudaria se o resultado estivesse dentro da Tabela Ticket e se não fosse necessario o sumarização deste atraves do conjunto While. O grande problema é que preciso Ordenar do maior pro menor, após a sumerização, eu até tentei isso: while ($row0 = mysql_fetch_assoc($query)) { $a = $row0['ticket_empresa_id']; $sqlq = sprintf('SELECT *, SUM(ticket_id)AS tmp FROM tbl_ticket WHERE ticket_empresa_id=%s AND ticket_ano=%s ORDER BY tmp DESC',$a,$ano); $queryq = mysql_query( $sqlq ) or die( mysql_error() ); $totalq = mysql_num_rows( $queryq ); Mas não rola...... De qualquer forma Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Ricardoo Lima 0 Denunciar post Postado Abril 28, 2010 Rapaz acho que achei uma solução... SELECT ticket_empresa_id, COUNT(ticket_empresa_id) FROM tbl_ticket GROUP BY ticket_empresa_id WHERE ano='2010' ORDER BY COUNT(ticket_empresa_id) ASC ou DESC; quase certeza que isso resolve seu problema! só faltou botar o LIMIT hehe Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Abril 28, 2010 include("includes/all_conn.php"); $ano = '2010'; $query = mysql_query('SELECT ticket_empresa_id, count(*) as total FROM tbl_ticket WHERE ticket_ano={$ano} GROUP BY ticket_empresa_id order by count(*) desc LIMIT 20') or die(mysql_error()); while ($row = mysql_fetch_assoc($query)) { $id = $row['ticket_empresa_id']; $total = $row['total']; echo 'Id: '.$id.' - Total: '.$total.'<br>'; } Compartilhar este post Link para o post Compartilhar em outros sites
mwitte 0 Denunciar post Postado Abril 28, 2010 Valeu Ricardo e valeu Victor!!!! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif :lol: Sem vcs não teria conseguido. As vezes a cabeça trava que não sai mais nada!!!!!! Obrigado, pode colocar como resulvido! Grande abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Jaime_Pinheiro 0 Denunciar post Postado Abril 28, 2010 Ricardo e Jaime, obrigado pela ajuda, mas acho que vcs não leram o codigo ou não entenderam o problema. ORDER BY realmente ajudaria se o resultado estivesse dentro da Tabela Ticket e se não fosse necessario o sumarização deste atraves do conjunto While. O grande problema é que preciso Ordenar do maior pro menor, após a sumerização, eu até tentei isso: while ($row0 = mysql_fetch_assoc($query)) { $a = $row0['ticket_empresa_id']; $sqlq = sprintf('SELECT *, SUM(ticket_id)AS tmp FROM tbl_ticket WHERE ticket_empresa_id=%s AND ticket_ano=%s ORDER BY tmp DESC',$a,$ano); $queryq = mysql_query( $sqlq ) or die( mysql_error() ); $totalq = mysql_num_rows( $queryq ); Mas não rola...... De qualquer forma Obrigado. Caro amigo, sumerização é algo novo em seu problema. Não havia mencionado isso antes. Compartilhar este post Link para o post Compartilhar em outros sites