Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) COUNT contando errado =S


Montano

Pergunta

$sql="SELECT cidade, situacao, count(situacao) AS qtsituacao FROM tb_contrato WHERE $consulta GROUP BY cidade, situacao ";

$result = mysql_query($sql);

$linha = mysql_num_rows($result);

for ($i=0;$i<$linha;$i++)

{

$reg = mysql_fetch_row($result);

$dados = mysql_fetch_array($result);

echo $reg[0];

echo $reg[1];

echo $dados["qtsituacao"];

}

esse codigo me mostra cidade: situaçao , e a quantidade daquela situacao naquela cidade. Ex:

SP - Ativada : 3

SP - Cancelada: 2

RJ - Ativada :0

SP - Cancelada:3

só que ele não esta contando certo :S

alguém consegue ver algum erro no codigo?

obrigado

Editado por Montano
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'Montano'!

O código está certo. O que deve estar errado é o dado dentro do banco de dados.

O Count(*) contará os registros independentes de term ou não dados nele.

O Count(<campo>) contará os registros dos campos que estiverem preenchidos. Isto é, ignorará os campos com NULL.

Ver seções 3.3.4.8. Contando Registros e 6.3.7.1. Funções GROUP BY do manual do MySQL Versão 4.1 (Tradução em Portugês)

Link para o comentário
Compartilhar em outros sites

  • 0

oi Denis,

resolvi o problema do count.. agora eu estou montando a tabela e me reparei com um erro no GROUP..

eu fiz o seguinte, executo o count, e os resultados eu mando pro BD de novo, só que organizando assim:

CIDADE, SITUACAO, QNT

como tem cidade com mais de uma situaçao, fica digamos 2 RJ EX:

RJ, ATIVADA, 10

RJ, Cancelada, 3

agora na hora de eu montar minha tabela eu to puchando assim:

$sql = "select * from tb_teste GROUP BY cidade";

$result = mysql_query($sql);

$linha = mysql_num_rows($result);

só que não sei se é o GROUP que ta fazendo com que pegue só o 1 cadastro da cidade RJ. no caso ele esta me dando só o ATIVADA , 10. o cancelada ele n ta pegando, sera q é por causa do group?

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, 'Montano'!

Você disse:

...só que não sei se é o GROUP que ta fazendo com que pegue só o 1 cadastro da cidade RJ. no caso ele esta me dando só o ATIVADA , 10. o cancelada ele n ta pegando, sera q é por causa do group?
Resposta: Sim. A cláusula GROUP BY não está entendendo o que você quer. Pelo que você passou em
$sql = "select * from tb_teste GROUP BY cidade";

você está informando que o agrupamento é apenas por cidade. Então ele vai te dar 1 registro por cada cidade.

Um outro erro que você está cometendo é o de usar o "*"(asterisco) para informar todos os campos em uma condição de agrupamento. O correto é utilizar somente os campos necessários.

Link para o comentário
Compartilhar em outros sites

  • 0

uhmm, suspeitei que fosse isso, mas voce sabe se tem algum jeito de eu fazer oque eu quero? fazer com que as cidades que tenha o mesmo nome, junte as situaçoes na mesma linha na tabela. agrupar por cidade, mas sem deichar de lado os dados dos outros campos dessas cidades.

valeu pela ajuda.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...