Ir para conteúdo

POWERED BY:

Arquivado

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

sliceart

[Resolvido] Como agrupo os registos de varios membros...

Recommended Posts

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

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

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

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

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

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

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

×

Informação importante

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