Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Srs,
Gostaria de Somar os valores da coluna sav.qtde_km_veiculo e qtd_lts_abaste_veiculos exceto o último, tente usar LIMIT mas não consegui, segue código completo.
SELECT SUM(sav.qtde_km_veiculo) / SUM(sav.qtd_lts_abaste_veiculos) AS consumo,sv.modelo_veiculo, sv.tp_veiculo,sav.cod_abaste_veiculos,sv.marca_veiculo, sv.placa_veiculo, sv.ano_veiculo,sv.tp_aquisicao_veiculo, sv.secretarias_cod_secretaria, sv.situacao_veiculo,sv.versao_veiculo,sv.obs_veiculo, sv.uso_veiculo,gv.tp_veiculo_geplan,gv.modelo_veiculo_geplan,gv.marca_veiculo_geplan,ace.nome_acao AS estado_veiculo,acp.nome_acao AS tipo_posse,gs.nome_secretaria,sav.qtde_km_veiculo
FROM seinfra_veiculos sv
LEFT JOIN geplan_veiculos gv ON (sv.modelo_veiculo = gv.cod_veiculo_geplan )
LEFT JOIN acoes ac ON ( sv.tp_aquisicao_veiculo = ac.cod_acao)
LEFT JOIN geplan_secretarias gs ON ( sv.secretarias_cod_secretaria = gs.cod_secretaria)
LEFT JOIN acoes ace ON ( sv.situacao_veiculo = ace.cod_acao)
LEFT JOIN acoes acp ON ( sv.tp_aquisicao_veiculo = acp.cod_acao)
LEFT JOIN seinfra_abaste_veiculos sav ON (sv.modelo_veiculo = sav.marca_abaste_veiculos)
WHERE sv.placa_veiculo LIKE '$placa_veic'GROUP BY gv.modelo_veiculo_geplan ASC
[]s
Campo Auto Incremento cod_abaste_veiculos da tabela seinfra_abaste_veiculos
[]s
Algo como
...
And id < (select max(id) from seinfra_abastece_veiculos)
...Me retornou o mesmo resultado.
Esse SELECT realiza um calculo soma total de km(qtde_km_veiculo) e soma total de lts(qtd_lts_abaste_veiculos).
e me retorna o consumo do veiculo, só que para isso eu não posso somar com o último abastecimento(que é qtd de litros que o veiculo ainda vai consumir).
[]s
And id < (select max(id)
from seinfra_abastece_veiculos sav2
Where sav2.marca abastece veiculos = sav.marca abaste veiculos)
Ou seja o maior id daquela chaveAinda está somando tudo.
SELECT SUM(sav.qtde_km_veiculo) as total_km,SUM(sav.qtd_lts_abaste_veiculos) as total_qtde_abaste, SUM(sav.vlr_total_abaste_veiculos) as vlr_total_abastecimento, SUM(ssv.vlr_total_manutencao_veiculo) as vlr_total_servicos,SUM(smv.vlr_total_troca_oleo) as vlr_total_manu,sv.cod_veiculo,sv.modelo_veiculo,sv.tp_veiculo,sv.marca_veiculo,sv.ano_veiculo,sv.tp_aquisicao_veiculo,sv.situacao_veiculo,sv.uso_veiculo,sv.versao_veiculo,sav.cod_abaste_veiculos,sv.secretarias_cod_secretaria,sv.placa_veiculo,sv.ano_veiculo,gv.modelo_veiculo_geplan,gv.marca_veiculo_geplan,gv.tp_veiculo_geplan,aca.nome_acao AS tipo_aquisicao,ace.nome_acao AS estado_veiculo,gs.nome_secretaria
FROM
seinfra_veiculos sv
LEFT JOIN geplan_veiculos gv ON(sv.modelo_veiculo=gv.cod_veiculo_geplan)
LEFT JOIN acoes aca ON(sv.tp_aquisicao_veiculo=aca.cod_acao)
LEFT JOIN seinfra_abaste_veiculos sav ON(sv.modelo_veiculo=sav.seinfra_veiculos_cod_veiculo)
LEFT JOIN acoes ace ON(sv.situacao_veiculo=ace.cod_acao)
LEFT JOIN seinfra_manutencao_veiculo smv ON(sv.modelo_veiculo=smv.seinfra_veiculos_cod_veiculo)
LEFT JOIN seinfra_servicos_veiculo ssv ON(sv.modelo_veiculo=ssv.seinfra_veiculos_cod_veiculo)
LEFT JOIN geplan_secretarias gs ON(sv.secretarias_cod_secretaria=gs.cod_secretaria)
WHERE
sv.modelo_veiculo = '$pesq_cod_veiculo' OR sv.modelo_veiculo = '$pesq_mod_veiculo' And sav.cod_abaste_veiculos < (select max(sav.cod_abaste_veiculos)
from seinfra_abaste_veiculos sav2
Where sav2.seinfra_veiculos_cod_veiculo = sav.seinfra_veiculos_cod_veiculo)
O poderia fazer era diminuir o último abastecimento da qtd total.
vou tentando por aqui.
[]s
WHERE sv.modelo_veiculo = '$pesq_cod_veiculo' OR sv.modelo_veiculo = '$pesq_mod_veiculo' And sav.cod_abaste_veiculos < (select max(sav2.cod_abaste_veiculos) from seinfra_abaste_veiculos sav2 Where sav2.seinfra_veiculos_cod_veiculo = sav.seinfra_veiculos_cod_veiculo)
A coluna no max tem de ser da tabela do subselect
>
WHERE sv.modelo_veiculo = '$pesq_cod_veiculo' OR sv.modelo_veiculo = '$pesq_mod_veiculo' And sav.cod_abaste_veiculos < (select max(sav2.cod_abaste_veiculos) from seinfra_abaste_veiculos sav2 Where sav2.seinfra_veiculos_cod_veiculo = sav.seinfra_veiculos_cod_veiculo)
A coluna no max tem de ser da tabela do subselect
Mota, já tinha feito o teste antes desse jeito e não funcionou.na tabela tenho:
cod_abaste_veiculos| qtd_lts_abasteveiculos|seinfra_veiculos_cod_veiculo
1 14,79 8
2 14,79 8
Com esse select era pra retornar somento 14,79(soma de todos abastecimentos referente ao cod_abaste 8)
Estou no trabalho agora, depois posto aqui a estrutura da tabela.
Obrigado pela colaboração
[]s
executei o código no banco e está pegando o primeiro cod_abastecimento de cada veículo e somando tudo do veículo.
Alguém?
[]s
Percebi que quando consulto direto na tabela seinfra_abaste_veiculos me retorna o resultado correto, o que tenho que alterar na minha consulta?
[]s
(select max(sav2.cod_abaste_veiculos) from seinfra_abaste_veiculos sav2 Where sv.modelo_veiculo= sav.seinfra_veiculos_cod_veiculo)
Resolvido. troquei na condição da subselect campo sav2.seinfra_veiculos_cod_veiculo por sv.modelo_veiculo.
[]s
O que define o "último" ?
Qual o critério ?