Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Gostaria de somar uma coluna de acordo com o critério informado, sendo que o usuário pode deixar de informar o critério e listar todos os resultados da tabela, segue sql:
SELECT sv.modelo_veiculo, sv.tp_veiculo, sv.marca_veiculo, sv.placa_veiculo, sv.ano_veiculo, sv.tp_aquisicao_veiculo, sv.secretarias_cod_secretaria, sv.situacao_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
FROM seinfra_veiculos sv
INNER JOIN geplan_veiculos gv ON (sv.modelo_veiculo = gv.cod_veiculo_geplan )
INNER JOIN acoes ac ON (sv.tp_aquisicao_veiculo = ac.cod_acao)
INNER JOIN geplan_secretarias gs ON (sv.secretarias_cod_secretaria = gs.cod_secretaria)
INNER JOIN acoes ace ON (sv.situacao_veiculo = ace.cod_acao)
INNER JOIN acoes acp ON (sv.tp_aquisicao_veiculo = acp.cod_acao)
WHERE sv.placa_veiculo LIKE '$placa_veic' ORDER BY gv.modelo_veiculo_geplan ASC
sendo que a coluna que quero somar é em outra tabela.
Você pode ocultar o filtro quando o usuário não digitar o valor, exemplo em PHP:
$valor_digitado = $_POST['valor'];
$sql = "SELECT ";
$sql .= "campo1, ";
$sql .= "campo2, ";
$sql .= "campo3 ";
$sql .= "FROM ";
$sql .= "tabela ";
if ( !empty(trim($valor_digitado)) ) {
$sql .= "WHERE campo1 = '$valor_digitado' ";
}
Se utilizar SUM() sem o GROUP BY, o resultado será a soma de todos os registros em uma única linha, acho que poderia colocar o GROUP BY pelo campo sv.placa_veiculo.
Valeu!
[]s
A questão de soma já resolvi com o SUM, agora gostaria que se o usuário não digitasse o valor a ser procurado me retornasse todos os registro da tabela.
segue código:
SELECT SUM(sav.qtde_km_veiculo) / SUM(sav.qtd_lts_abaste_veiculos) AS consumo,sv.modelo_veiculo, sv.tp_veiculo, 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
INNER JOIN geplan_veiculos gv ON (sv.modelo_veiculo = gv.cod_veiculo_geplan ) INNER JOIN acoes ac ON (sv.tp_aquisicao_veiculo = ac.cod_acao)
INNER JOIN geplan_secretarias gs ON (sv.secretarias_cod_secretaria = gs.cod_secretaria)
INNER JOIN acoes ace ON (sv.situacao_veiculo = ace.cod_acao)
INNER JOIN acoes acp ON (sv.tp_aquisicao_veiculo = acp.cod_acao)
INNER JOIN seinfra_abaste_veiculos sav ON (sv.modelo_veiculo = sav.seinfra_veiculos_cod_veiculo) WHERE sv.placa_veiculo LIKE '$placa_veic'
ORDER BY gv.modelo_veiculo_geplan ASC
[]s