Ir para conteúdo

POWERED BY:

Arquivado

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

horacio2009

[Resolvido] contagem de linhas com group

Recommended Posts

Bom dia a todos!!

eu tenho a seguinte query:

SELECT * FROM controle_clientes WHERE mes_assembleia='$mes_assembleia' AND ano_assembleia='$ano_assembleia'  order by nome
bom, nesta query, estou retornando 3 resultados, porém, agrupados...

mas sei que se selecionar todos onde "mes_assembleia=9 e ano_assembleia=2009" aparecerão sei lá, uns 20 registros...enfim...

eu quero mostrar o número de linhas exatas dentro de cada critério pesquisado, porém, com o group, ele tá muito limitado....

como faço???

minha ideia é que apareçam assim:

 

09/2009 20 registros

08/2009 12 registros

07/2009 60 registros

 

algo assim...como eu faço para realizar esse tipo de contagem? qual a melhor query?

Obrigado a todos!!!

Horácio http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta isso...

 

SELECT mes_assembleia, ano_assembleia, COUNT(*) AS registros FROM controle_clientes GROUP BY ano_assembleia, mes_assembleia

Compartilhar este post


Link para o post
Compartilhar em outros sites

então...eu fiz dessa forma:

$tab=mysql_query("SELECT mes_assembleia, ano_assembleia, COUNT(*) AS registros FROM controle_clientes GROUP BY ano_assembleia, mes_assembleia");         
$linhas=mysql_num_rows($tab);  $cont = mysql_fetch_array($tab); 
$total = $cont["registros"];

EM PARTE deu certo...pois ele tá lendo todas as linhas dessa tabela:

 

verificar as assembleias do mês: 0/0 | 580

verificar as assembleias do mês: 9/2009 | 580

verificar as assembleias do mês: 12/2009 | 580

 

 

...porém, ainda não é isso que eu quero...

preciso que ele mostre assim:

 

 

verificar as assembleias do mês: 0/0 | 23

verificar as assembleias do mês: 9/2009 | 33

verificar as assembleias do mês: 12/2009 | 15

 

Como eu faço para que os dados retornem dessa forma?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

 

$tab=mysql_query("SELECT mes_assembleia, ano_assembleia, COUNT(nome) AS registros FROM controle_clientes GROUP BY ano_assembleia, mes_assembleia");

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, ainda não tá indo não...eu inclusive dei uma refinada na pesquisa, onde eu mostro apenas os resultados que tem data de assembleia definida...

reduziu muito os resultados, porém, ainda não separa adequadamente...

mostra assim:

 

verificar as assembleias do mês: 9/2009 | 33

verificar as assembleias do mês: 12/2009 | 33

 

checando, nas assembleia do mes 12/2009, existe apenas um registro...e mostra 33, só que 33 são apenas do mes 9/2009...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, estranho. Tentou rodar a query direto no MySQL, fora do programa? Qual versão do MySQL você tá usando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tash...

Realmente acessando o banco de dados funciona perfeitamente, o que me remete a uma caca fenomal no php, na hora de puxar os dados...rsrsrs

eu vou postar o código aqui, dê uma olhada e me de uma luz nisso, por favor!! rsrsrs

 

 

Aí vai o codigo:

$tab=mysql_query("SELECT mes_assembleia, ano_assembleia, COUNT(nome) AS registros FROM controle_clientes WHERE mes_assembleia<>'' GROUP BY ano_assembleia, mes_assembleia");       

$linhas=mysql_num_rows($tab);

$cont = mysql_fetch_array($tab);
$total = $cont["registros"];

$numeros = $tab["registros"];
$x="0";
for($x;$x<$linhas;$x++)
{

$mes_assembleia=mysql_result($tab,$x,'mes_assembleia');
$ano_assembleia=mysql_result($tab,$x,'ano_assembleia');
echo"<tr>

<td class='td'>
<a href='verifica_assembleia.php?mes_assembleia=$mes_assembleia&ano_assembleia=$ano_assembleia'>
verificar as assembleias do mês: $mes_assembleia/$ano_assembleia | $total</td>
</a>

</tr>";
}



Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, precisa dar uma olhada nesse código com mais calma. Alí em cima você atribui "$cont" pra um resultado de mysql_fetch_array.

 

A função mysql_fetch_array retorna uma linha do resultado e move o ponteiro para a próxima linha. Logo abaixo, você atribui o "$total" pra coluna "registros" da linha que você pegou. Lá no loop, você só usa esse total, ou seja, o total da primeira linha =)

 

Você pode usar somente um while e mysql_fetch_array em tudo, mais ou menos assim:

 

$tab=mysql_query("SELECT mes_assembleia, ano_assembleia, COUNT(nome) AS registros FROM controle_clientes WHERE mes_assembleia<>'' GROUP BY ano_assembleia, mes_assembleia");       

while($linha = mysql_fetch_array($tab)) 
{
echo"<tr>

<td class='td'>
<a href='verifica_assembleia.php?mes_assembleia={$linha['mes_assembleia']}&ano_assembleia={$linha['ano_assembleia']}'>
verificar as assembleias do mês: {$linha['mes_assembleia']}/{$linha['ano_assembleia']} | {$linha['registros']}</td>
</a>

</tr>";
}

Além de ser menor, consome menos recursos e é mais elegante ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tash...

simplismente perfeito!!!!

tá meio na cara que eu preciso estudar mais ARRAYS...

você tem razão...realmente, até o código fica mais limpo...

Bom, Tash...

Muito obrigado mesmo por enquanto!!!!

Grande abraço, cara!!!

Horácio

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.