sliceart 0 Denunciar post Postado Junho 25, 2009 Boas ppl, queria agrupar os ganhos de varios membros, para depois mostrar por ordem DESC, por exemplo: tabela: Id | membro | ganho 1 | x | 10 2 | x | 20 3 | y | 10 4 | x | 10 5 | z | 50 queria mostrar tipo ranking Rank | membro | ganho 1 | z | 50$ 2 | x | 40$ 3 | y | 10$ já andei a tentar com Select SUM() etc... mas não consigo... Agradeço a vossa ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 25, 2009 Não testei, mas deve ser assim SELECT SUM(ganho) as soma FROM tabela GROUP BY membro. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
sliceart 0 Denunciar post Postado Junho 26, 2009 já tinha experimentado +- isso mas continuo a não conseguir fazer é o "ranking", ou seja, mostrar os dados do SELECT... normalmente utilizo "while ($row = mysql_fetch_array".... e depois na tabela onde mostro o array "echo $valoretc" mas desta vez não consigo mostrar os dados. Será que não posso usar mysql_fetch_array?! Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 26, 2009 Posta teu código completo. O Select acho que é assim... Só faltou a ordenação. SELECT SUM(ganho) as soma FROM tabela GROUP BY membro ORDER BY soma DESC Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
sliceart 0 Denunciar post Postado Junho 26, 2009 o select parece estar a funcionar porque obtenho duas linhas como resultado do select o que corresponde aos 2 membro k tenho na tabela...mas não me aparece é os dados relativos aos "echo $membro e $ganho" correspondente a cada 1... código: .... <? $busca = "SELECT SUM(ganho) as soma FROM tabela GROUP BY membro ORDER BY soma DESC"; $total_reg = "10"; // número de registros por página if (!$pagina) { $pc = "1"; } else { $pc = $pagina; } $inicio = $pc - 1; $inicio = $inicio * $total_reg; $limite = mysql_query("$busca LIMIT $inicio,$total_reg"); $todos = mysql_query("$busca"); $tr = mysql_num_rows($todos); // verifica o número total de registros $tp = $tr / $total_reg; // verifica o número total de páginas while ($row = mysql_fetch_array($limite)){ $membro = $row["membro"]; $ganho = $row["ganho"]; ..... ?> Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 26, 2009 Aqui, para debug, coloca assim... while ($row = mysql_fetch_array($limite)){ echo 'O membro '.$row['membro'].' teve o ganho de '.$row['ganho']; } Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
sliceart 0 Denunciar post Postado Junho 26, 2009 já experimentei e o resultado é igual, o select esta a funcionar porque o array mostra a quantidade certa de linhas mas os dados referente ao $row['membro'] e $row['ganho'] não me aparece... é estranho. o resultado está a ser este: O membro teve o ganho de O membro teve o ganho de O membro teve o ganho de ... em vez de: O membro x teve o ganho de 4 O membro y teve o ganho de 2 .... experimentei fazer um select "nornal" sem o SUM() e o GROUP BY e dessa forma os dados são mostrados mas não aparecem é agrupados... Compartilhar este post Link para o post Compartilhar em outros sites
sliceart 0 Denunciar post Postado Junho 26, 2009 http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Já consegui resolver: faltava o "membro" antes do SUM() "SELECT membro,SUM(ganho) as soma FROM tabela GROUP BY membro ORDER BY soma DESC"; e em vez de: echo 'O membro '.$row['membro'].' teve o ganho de '.$row['ganho]; tem de ser: $row['soma]; Obrigado pelas dicas Compartilhar este post Link para o post Compartilhar em outros sites