Montano Postado Dezembro 30, 2008 Denunciar Share Postado Dezembro 30, 2008 (editado) $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 : 3SP - Cancelada: 2RJ - Ativada :0SP - Cancelada:3só que ele não esta contando certo :S alguém consegue ver algum erro no codigo?obrigado Editado Janeiro 4, 2009 por Montano Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Janeiro 2, 2009 Denunciar Share Postado Janeiro 2, 2009 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 More sharing options...
0 Montano Postado Janeiro 2, 2009 Autor Denunciar Share Postado Janeiro 2, 2009 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, 10RJ, Cancelada, 3agora 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 More sharing options...
0 Denis Courcy Postado Janeiro 3, 2009 Denunciar Share Postado Janeiro 3, 2009 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 More sharing options...
0 Montano Postado Janeiro 3, 2009 Autor Denunciar Share Postado Janeiro 3, 2009 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 More sharing options...
Pergunta
Montano
$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 MontanoLink para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados