Ir para conteúdo

POWERED BY:

Arquivado

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

gilmarfp

somar valores com sql

Recommended Posts

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

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

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

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

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

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

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

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

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

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

×

Informação importante

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