Ir para conteúdo

POWERED BY:

Arquivado

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

Giovani Velasques

[Resolvido] Subtraindo e multiplcando variavel

Recommended Posts

Bom dia amigos.

Bom estou precisando de uma força de vcs, é o seguinte:

Tenho valor de km_inicial e km_final, sendo que km_final subtrai por km_inicial e seu resultado

é multiplicado pelo valor do tipo da estrada, asfalto é tal preço e vicinal tal preço.

Seguinte me retorna a Km rodada e o valor desta viagem, até ai tudo ok. Código abaixo

como estou fazendo:

 

 

$consulta_viagem_percurso = pg_query("SELECT * FROM viagem_percurso WHERE codigo_viagem ={$_SESSION ['codigo_viagem_gerado']}");
                       	while ($row = pg_fetch_assoc ($consulta_viagem_percurso)){
                           	$km_inicial = $row['km_inicial'];
                           	$km_final = $row['km_final'];
                           	$soma = $km_final - $km_inicial;
                            	$RS   = $soma * $row['valor_km_atual'];


                       	}
                         	echo"<br/>KM rodados:  $soma<br/>
                                   	Total em R$:  $RS";

 

Bom agora vem a minha duvida. Não estou conseguindo gerar o código para seguinte quilometragem.

ex:

Km_inicial: 100 Km_final: 150 Tipo_estrada: Vicinal Valor: 2.00

 

Km_inicial: 150 Km_final: 200 Tipo_estrada: Asfalto Valor: 1.50

 

Aquele código acima me retorna certinho se lançar apenas uma quilometragem, agora se lançar

duas ou mais quilometragens não me retorna certo os resultados.

Gostaria de uma dica de vcs de como poderia fazer isto.

Abraço

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Victor.

Mas isto já esta separado, como tinha dito antes, se eu inserir apenas umas linha:

 

Km_inicial: 100 Km_final: 150 Tipo_estrada: Vicinal Valor: 2.00

 

ele traz os resultados normais:

 

Km rodado: 50

valor: 100

 

Só que eu quero quando ele andar em outro tipo de estrada, ele vai ter q lançar a km q rodo nela,

então vai ter q me retornar o resumo destas duas linhas, somando elas. Resumo que eu

digo é km rodado e valor. Espero q tenha sido claro. Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, no mesmo trajeto pode ter estes dois tipos de estrada.

ex:

O técnico agronomo tem que ir em alguma fazenda (produtor),

e no caminho ele anda 30 km de asfalto, ai entra em uma estrada visinal e

percorre mais 20 km nela e volta para estrada de asfalto e anda mais 40km.

então como tinha dito antes cada entrada em cada estrada desta é uma linha

daquelas, então gostaria de saber como fazer esta soma. abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

É em PostgreSQL:

 

 

CREATE TABLE "public"."viagem_percurso" (
 "codigo_viagem_percurso" SERIAL, 
 "codigo_viagem" NUMERIC(20,0) NOT NULL, 
 "codigo_estrada_tipo" SMALLINT NOT NULL, 
 "km_final" NUMERIC(10,0) NOT NULL, 
 "valor_km_atual" NUMERIC(4,2), 
 "km_inicial" NUMERIC(10,0) NOT NULL, 
 CONSTRAINT "viagem_percurso_pkey" PRIMARY KEY("codigo_viagem_percurso"), 
 CONSTRAINT "viagem_percurso_fk" FOREIGN KEY ("codigo_viagem")
REFERENCES "public"."viagem"("codigo_viagem")
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE, 
 CONSTRAINT "viagem_percurso_fk1" FOREIGN KEY ("codigo_estrada_tipo")
REFERENCES "public"."estrada_tipo"("codigo_estrada_tipo")
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE
) WITHOUT OIDS;

ALTER TABLE "public"."viagem_percurso"
 ALTER COLUMN "codigo_viagem_percurso" SET STATISTICS 0;

ALTER TABLE "public"."viagem_percurso"
 ALTER COLUMN "codigo_viagem" SET STATISTICS 0;

ALTER TABLE "public"."viagem_percurso"
 ALTER COLUMN "codigo_estrada_tipo" SET STATISTICS 0;

ALTER TABLE "public"."viagem_percurso"
 ALTER COLUMN "km_final" SET STATISTICS 0;

ALTER TABLE "public"."viagem_percurso"
 ALTER COLUMN "valor_km_atual" SET STATISTICS 0;

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

apesar de não gostar da sua modelagem!!!

apenas uma idéia

 

query agrupando por tipo de estrada

select 
	sum(( vp.`km_final` - vp.`km_inicial` ) * vp.`valor_km_atual` ) as valor_estrada, --somando o valor por estrada
	sum( vp.`km_final` - vp.`km_inicial` ) as total_km_estrada, --somando a km por estrada
	et.`nome_estrada` as nome --aki o nome da estrada na tabela `estrada_tipo`	
from 
	`viagem_percurso` vp 
inner join 
	`estrada_tipo` et
on
	vp.`codigo_estrada_tipo` = et.`codigo_estrada_tipo`
where 
	`codigo_viagem_percurso` = {$codigo_percurso} 
group by 
	`codigo_estrada_tipo` --agrupando

 

imprimindo

       $total_km = 0;
$total_valor = 0;	
while( $linha = pg_fetch_assoc($query) ){
	echo "Estrada {$linha['nome']}<br>";
	echo "Total de km: {$linha['total_km_estrada']} <br>";
	echo "Total de reais: {$linha['valor_estrada']}<br>";
	$total_km += $linha['total_km_estrada']; 
	$total_valor += $linha['valor_estrada'];
}
echo "Total de km: {$total_km}<br>";
echo "Total de reais: {$total_valor}";

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual erro ? sempre que aparecer algum, e você não souber resolver, informe qual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpem a demora ao responder estava tentando ageitar o código.

Estes são os seguintes erros:

Notice: Undefined variable: codigo_percurso in C:\Arquivos de programas\PostgreSQL\EnterpriseDB-ApachePhp\apache\www\kmsystem4\principal\processo\transacao.php on line 223

 

Warning: pg_query() [function.pg-query]: Query failed: ERRO: erro de sintaxe em ou pr�o a "group" LINE 13: ... group by ... ^ in C:\Arquivos de programas\PostgreSQL\EnterpriseDB-ApachePhp\apache\www\kmsystem4\principal\processo\transacao.php on line 225

 

Warning: pg_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\Arquivos de programas\PostgreSQL\EnterpriseDB-ApachePhp\apache\www\kmsystem4\principal\processo\transacao.php on line 228

 

Código que estou aplicando:

$consulta_viagem_percurso = pg_query("select             	
                                                	sum(( vp.km_final - vp.km_inicial ) * vp.valor_km_atual ) as valor_estrada,             	
                                                	sum( vp.km_final - vp.km_inicial ) as total_km_estrada,            	
                                                	et.nome_estrada as nome          	
                                                	from             	
                                                	viagem_percurso vp     	
                                                	inner join             	
                                                	estrada_tipo et    	
                                                	on            	
                                                	vp.codigo_estrada_tipo = et.codigo_estrada_tipo    	
                                                	where             	
                                                	codigo_viagem_percurso = {$codigo_percurso}     	
                                                	group by             	
                                                	codigo_estrada_tipo");
                       	$total_km = 0;    	
                       	$total_valor = 0;           	
                       	while( $linha = pg_fetch_assoc($consulta_viagem_percurso) ){            	
                           	echo "Estrada {$linha['nome']}<br>";            	
                           	echo "Total de km: {$linha['total_km_estrada']} <br>";            	
                           	echo "Total de reais: {$linha['valor_estrada']}<br>";            	
                           	$total_km += $linha['total_km_estrada'];             	
                           	$total_valor += $linha['valor_estrada'];    	
                           	}    	
                           	echo "Total de km: {$total_km}<br>";    	
                           	echo "Total de reais: {$total_valor}";

 

Valeu.Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primeiro erro diz que a $codigo_percurso não está definida (e neste trecho do código realmente não está). Procure onde você define ela, verifique o nome correto da variável. Acredito que ao resolver o primeiro erro, os outros 2 parem de aparecer.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Matias.

Cara eu troquei aquela linha de código por:

 

codigo_viagem ={$_SESSION ['codigo_viagem_gerado']} 

 

ai me retorno os dois ultimos erros que seguem abaixo:

 

Warning: pg_query() [function.pg-query]: Query failed: ERRO: coluna et.nome_estrada n�existe in C:\Arquivos de programas\PostgreSQL\EnterpriseDB-ApachePhp\apache\www\kmsystem4\principal\processo\transacao.php on line 225

 

Warning: pg_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\Arquivos de programas\PostgreSQL\EnterpriseDB-ApachePhp\apache\www\kmsystem4\principal\processo\transacao.php on line 228

 

 

Tentei modificar algumas coisas mas n consegui, espero que possa me dar esta força.

Desde já obrigado. Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Warning: pg_query() [function.pg-query]: Query failed: ERRO: coluna et.nome_estrada não existe in C:\Arquivos de programas\PostgreSQL\EnterpriseDB-ApachePhp\apache\www\kmsystem4\principal\processo\transacao.php on line 225

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por isto mesmo, eu falei que não tinha entendido o código,

é por isto que estou enviando os erros, eu vi que et.nome_estrada não existe.

Esperava q pudesse me dar uma mão para entender.

Mas valeu, ta traqnuilo. Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja, a mensagem é disparada pelo banco de dados ao executar uma query. Nesta query, você está fazendo um select desta coluna do banco de dados. O banco de dados está dizendo que esta coluna não existe. Simples assim.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido pessoal, estudei um poco sobre sum, e vi que é muito mais facil q eu pensava.

Agradeço a paciência dos amigos comigo, que tentaram me dar esta força.

Não precisava fazer inner join nas tabelas, utiliza-se uma tabela.

Código:

$consulta_viagem_percurso = pg_query("SELECT sum(( km_final - km_inicial ) * valor_km_atual ) as valor_estrada,
                                                	sum( km_final - km_inicial ) as total_km_estrada
                                                	FROM viagem_percurso WHERE codigo_viagem ={$_SESSION ['codigo_viagem_gerado']}");
                       	$row = pg_fetch_array ($consulta_viagem_percurso);
                           	$soma_valor_estrada = $row['valor_estrada'];
                           	$soma_total_km_estrada = $row['total_km_estrada'];


                         	echo"<br/>KM rodados:  $soma_total_km_estrada<br/>
                                   	Total em R$: " .number_format($soma_valor_estrada,2,',','.'); 

Valeu gurizada... Abraço

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.