gilmarfp 0 Denunciar post Postado Março 24, 2010 Tenho uma tabela chamada CONTA_RECEBER que contem o campo VALOR , que contem os valores que o cliente tem em debito, gostaria de saber como faço pra somar os debitos de cada cliente pra serem exibidos na tela. Compartilhar este post Link para o post Compartilhar em outros sites
ozorio silva 0 Denunciar post Postado Março 24, 2010 de uma olhada em funções de agregação Funções de agregação - COUNT: Conta a quantidade de resultados agrupados. - SUM: Soma os valores retornados dos resultados agrupados. - AVG: Calcula a média dos valores retornados dos resultados agrupados. - MAX: Encontra o maior valor dos resultados agrupados. - MIN: Encontra o menor valor dos resultados agrupados. Seria Mais o Menos isso nao sei como é sua estrutura do banco Select CONTA_RECEBER, Sum(valor + valor)as total_de_debitos From valor Group By TBL ------------------------------------- ou count() Select CONTA_RECEBER, Count(*) From valor Group By TBL Compartilhar este post Link para o post Compartilhar em outros sites
gilmarfp 0 Denunciar post Postado Março 24, 2010 cara fiz um teste aqui assim : $query='select sum(VALOR) FROM CONTA_RECEBER where CODIGO_CLIENTE=\'1906\''; $resultado=ibase_query($conexao,$query); echo $resultado; e ta mostrando na tela Resource id #3 que será que fiz errado Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Março 24, 2010 e ta mostrando na tela Resource id #3 que será que fiz errado não percorreu o recurso e não estudou o suficiente como se faz para manipular consultas Compartilhar este post Link para o post Compartilhar em outros sites
gilmarfp 0 Denunciar post Postado Março 24, 2010 poderia me informar onde estudo isso? Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Março 24, 2010 http://br2.php.net/manual/pt_BR/book.ibase.php Compartilhar este post Link para o post Compartilhar em outros sites
gilmarfp 0 Denunciar post Postado Março 25, 2010 Valeu, agora eu fiz assim $query='select sum(VALOR) FROM CONTA_RECEBER where CODIGO_CLIENTE=\''.$codigo_cliente.'\'AND ESTADO=\'A receber\''; $resultado = ibase_query($conexao,$query); $vis=ibase_fetch_row($resultado); echo $vis[0];?> e aparece a soma de um cliente apenas o $codigo_cliente, más me dê uma força aí como faço pra mostrar a soma dos debitos de cada cliente de uma vez? Compartilhar este post Link para o post Compartilhar em outros sites
cristiadu 0 Denunciar post Postado Março 25, 2010 $query= "select sum(valor) FROM CONTA_RECEBER GROUP BY CODIGO_CLIENTE"; Compartilhar este post Link para o post Compartilhar em outros sites
gilmarfp 0 Denunciar post Postado Março 25, 2010 Na verdade oque desejo fazer é que apareceça uma lista com a soma de cada cliente do contas á receber Compartilhar este post Link para o post Compartilhar em outros sites
cristiadu 0 Denunciar post Postado Março 25, 2010 $query= "select CODIGO_CLIENTE, sum(valor) FROM CONTA_RECEBER WHERE ESTADO='A Receber' GROUP BY CODIGO_CLIENTE"; Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Março 25, 2010 Imagine o resultado como uma tabela.. onde você tem linhas e colunas. Cada fetch, percorre uma linha, te retornando as colunas como array() e para o ponteiro o início da próxima linha. Descrição array mysql_fetch_row ( resource $result ) Retorna uma array numérica que corresponde a linha obtida e move o ponteiro interno dos dados adiante. http://br2.php.net/manual/pt_BR/function.mysql-fetch-row.php Isso quer dizer que, para cada linha, você tem que efetuar um novo fetch_row. Para fazer isso, existem duas formas de loop: 1ª descobrindo o número de linhas e iterando o número exato: $linhas = mysql_num_rows(resource $result); for($i = 0; $i < $linhas; $i++) { $linha = mysql_fetch_row(resource $result); echo $linha[0]; } 2ª Iterando enquanto existirem linhas. A tradução de enquanto para o inglês é while. Primeiro vamos citar esta parte presente no manual: Valor Retornado Retorna uma array numérica de strings que corresponde linha obtida, ou FALSE se não houverem mais linhas. desta maneira, é possível jogar a função dentro de um while e iterar sobre ela: while(false !== ($linha = mysql_fetch_row(resource $result))) echo $linha[0]; Compartilhar este post Link para o post Compartilhar em outros sites
cristiadu 0 Denunciar post Postado Março 25, 2010 Ah, não tinha visto que ele não usou o while para preencher o array :) Compartilhar este post Link para o post Compartilhar em outros sites
gilmarfp 0 Denunciar post Postado Março 26, 2010 Meus amigos eu ainda tô numa briga aqui então vou mandar o código do que estou fazendo pra ver se vocês me ajudam este é o código: <html> <head> <title>Relatório Contas á Receber</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <table width="700 " border="1"> <tr> <td>Controle</td> <td>Cód Cliente</td> <td>Cliente</td> <td>Emitido</td> <td>Vencimento</td> <td>Valor</td> <td>Nosso Número</td> </tr> <tr> <?php $conexao = ibase_connect('***','***','***','***',0,3) or die('Não foi possível conectar'); $sql='SELECT DOCUMENTO,CODIGO_CLIENTE,NOME_CLIENTE,DATA_EMISSAO,DATA_VENCIMENTO,VALOR,CODIGO_NOTA FROM CONTA_RECEBER order by nome_cliente ';//where CODIGO_CLIENTE=\''.$codigo_cliente.'\' AND ESTADO=\'A receber\'AND CODIGO_NOTA=\''.$codigo_pedido.'\''; $resultado = ibase_query($conexao,$sql); while($linha = ibase_fetch_assoc($resultado)){ ?> <td><?php echo $linha["DOCUMENTO"];?></td> <td> <?php echo $linha["CODIGO_CLIENTE"];?></td> <td><?php echo $linha["NOME_CLIENTE"];?></td> <td><?php echo $linha["DATA_EMISSAO"];?></td> <td><?php echo $linha["DATA_VENCIMENTO"];?></td> <td><?php echo number_format($linha["VALOR"], 2, ',', '');?></td> <td><?php echo "<font color='blue'>".$linha["CODIGO_NOTA"]."</font>";?></td> </tr><?php }?> </table> </body> </html> e isto exibe na tela uma lista com as informações do contas á receber, até aqui tudo bem tá certo, so que o que eu gostaria de fazer é que ao lado do campo valor aparecesse um campo com a soma dos debitos de cada cliente será que tem como fazer isso ? Compartilhar este post Link para o post Compartilhar em outros sites
cristiadu 0 Denunciar post Postado Março 26, 2010 Tem sim: $cod_cliente=$linha["CODIGO_CLIENTE"]; $query2="select sum(valor) FROM CONTA_RECEBER WHERE ESTADO='A Receber' WHERE CODIGO_CLIENTE=".$cod_cliente; $rs = ibase_query($conexao,$query2); $valor_total = ibase_fetch_assoc($rs); o Total do cliente fica na variável $valor_total isso dentro do while, por favor :D Compartilhar este post Link para o post Compartilhar em outros sites
gilmarfp 0 Denunciar post Postado Março 26, 2010 o codigo ficou assim: <html> <head> <title>Relatório Contas á Receber</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <?php $conexao = ibase_connect('localhost:C:\root\RELATORIO_COBRANCAS\SISTEMA.FDB','SYSDBA','masterkey','WIN1252',0,3) or die('Não foi possível conectar'); $sql='SELECT DOCUMENTO,CODIGO_CLIENTE,NOME_CLIENTE,DATA_EMISSAO,DATA_VENCIMENTO,VALOR,CODIGO_NOTA FROM CONTA_RECEBER order by nome_cliente '; $resultado = ibase_query($conexao,$sql); while($linha = ibase_fetch_assoc($resultado)){ ?> <table width="700 " border="1"> <tr> <td>Controle</td> <td>Cód Cliente</td> <td>Cliente</td> <td>Emitido</td> <td>Vencimento</td> <td>Valor</td> <td>Nosso Número</td> <td>Total</td> </tr> <tr> <td><?php echo $linha["DOCUMENTO"];?></td> <td> <?php echo $cod_cliente=$linha["CODIGO_CLIENTE"];?></td> <td><?php echo $linha["NOME_CLIENTE"];?></td> <td><?php echo $linha["DATA_EMISSAO"];?></td> <td><?php echo $linha["DATA_VENCIMENTO"];?></td> <td><?php echo number_format($linha["VALOR"], 2, ',', '');?></td> <td><?php echo "<font color='blue'>".$linha["CODIGO_NOTA"]."</font>";?></td> <td><?php $query2="select sum(valor) FROM CONTA_RECEBER WHERE ESTADO='A Receber' WHERE CODIGO_CLIENTE=".$cod_cliente; $rs = ibase_query($conexao,$query2); $valor_total = ibase_fetch_assoc($rs); echo $valor_total; ?></td> </tr> </table> <?php }?> </body> </html> e deu o seguinte erro: Warning: ibase_query() [function.ibase-query]: Dynamic SQL Error SQL error code = -104 Token unknown - line 1, char 63 WHERE in C:\root\RELATORIO_COBRANCAS\RELATORIO_BOLETOS.php on line 36 Warning: ibase_fetch_assoc(): supplied argument is not a valid Firebird/InterBase result resource in C:\root\RELATORIO_COBRANCAS\RELATORIO_BOLETOS.php on line 37 Que será que fiz errado Compartilhar este post Link para o post Compartilhar em outros sites