Dificuldade em executar um select
Boa Tarde a Todos,
Estou tendo problemas para executar alguns selects.
EX:
Tenho um sistema de controle de frota, e preciso mostrar em um relatorio o ultimo km de retorno de todos os veiculos, ou seja, quando o veiculo volta e gravado o km de retorno, o mesmo devera substituir o antigo km pelo km novo no relatorio.
select * from transportes
ex:
cod: 5 Carro:uno km:1000
cod:10 Carro:uno km:2000
cod:11 Carro:celta km:500
cod:12 Carro:uno km:3500
usando esse select abaixo consegui um avanço em tirar a duplicidade veja.
SELECT transporte.cod,kmf,transporte
FROM emphasis.transporte left join emphasis.carros on (nome = transporte)
GROUP BY transporte, nome
ORDER BY cod desc
resultado:
cod:5 Carro:uno km:1000
cod:11Carrocelta km:500
porem ele pega o primeiro registro de cada carro, e eu preciso que ele me mostre sempre o ultimo km de cada carro.
se alguém puder me ajudar eu agradesço.
Estou tendo problemas para executar alguns selects.
EX:
Tenho um sistema de controle de frota, e preciso mostrar em um relatorio o ultimo km de retorno de todos os veiculos, ou seja, quando o veiculo volta e gravado o km de retorno, o mesmo devera substituir o antigo km pelo km novo no relatorio.
select * from transportes
ex:
cod: 5 Carro:uno km:1000
cod:10 Carro:uno km:2000
cod:11 Carro:celta km:500
cod:12 Carro:uno km:3500
usando esse select abaixo consegui um avanço em tirar a duplicidade veja.
SELECT transporte.cod,kmf,transporte
FROM emphasis.transporte left join emphasis.carros on (nome = transporte)
GROUP BY transporte, nome
ORDER BY cod desc
resultado:
cod:5 Carro:uno km:1000
cod:11Carrocelta km:500
porem ele pega o primeiro registro de cada carro, e eu preciso que ele me mostre sempre o ultimo km de cada carro.
se alguém puder me ajudar eu agradesço.
André Luiz
Curtidas 0
Respostas
Wilson Junior
30/03/2011
Coloque aqui a estrutura das suas tabelas, pois está meio confuso este seu SQL.
Aguardo retorno.
Aguardo retorno.
GOSTEI 0
André Luiz
30/03/2011
Cod int(10) notnull auto inctransporte varchar(45) notnullkmi int(10) notnulldatae datetime notnull datas datetime notnullkmf varchar(45) notnullmotorista varchar(45) notnulldestino varchar(45) notnullcalculo int(10) notnullemtransito int(2) notnullmotoristaretorno varchar(45) notnull
GOSTEI 0
André Luiz
30/03/2011
Boa Tarde a Todos,
Estou tendo problemas para executar alguns selects.
EX:
Tenho um sistema de controle de frota, e preciso mostrar em um relatorio o ultimo km de retorno de todos os veiculos, ou seja, quando o veiculo volta e gravado o km de retorno, o mesmo devera substituir o antigo km pelo km novo no relatorio.
select * from transportes
ex:
cod: 5 Carro:uno km:1000
cod:10 Carro:uno km:2000
cod:11 Carro:celta km:500
cod:12 Carro:uno km:3500
usando esse select abaixo consegui um avanço em tirar a duplicidade veja.
SELECT transporte.cod,kmf,transporte
FROM emphasis.transporte left join emphasis.carros on (nome = transporte)
GROUP BY transporte, nome
ORDER BY cod desc
resultado:
cod:5 Carro:uno km:1000
cod:11Carrocelta km:500
porem ele pega o primeiro registro de cada carro, e eu preciso que ele me mostre sempre o ultimo km de cada carro.
se alguém puder me ajudar eu agradesço.
Cod int(10) notnull auto inctransporte varchar(45) notnullkmi int(10) notnulldatae datetime notnull datas datetime notnullkmf varchar(45) notnullmotorista varchar(45) notnulldestino varchar(45) notnullcalculo int(10) notnullemtransito int(2) notnullmotoristaretorno varchar(45) notnull
Estou tendo problemas para executar alguns selects.
EX:
Tenho um sistema de controle de frota, e preciso mostrar em um relatorio o ultimo km de retorno de todos os veiculos, ou seja, quando o veiculo volta e gravado o km de retorno, o mesmo devera substituir o antigo km pelo km novo no relatorio.
select * from transportes
ex:
cod: 5 Carro:uno km:1000
cod:10 Carro:uno km:2000
cod:11 Carro:celta km:500
cod:12 Carro:uno km:3500
usando esse select abaixo consegui um avanço em tirar a duplicidade veja.
SELECT transporte.cod,kmf,transporte
FROM emphasis.transporte left join emphasis.carros on (nome = transporte)
GROUP BY transporte, nome
ORDER BY cod desc
resultado:
cod:5 Carro:uno km:1000
cod:11Carrocelta km:500
porem ele pega o primeiro registro de cada carro, e eu preciso que ele me mostre sempre o ultimo km de cada carro.
se alguém puder me ajudar eu agradesço.
Cod int(10) notnull auto inctransporte varchar(45) notnullkmi int(10) notnulldatae datetime notnull datas datetime notnullkmf varchar(45) notnullmotorista varchar(45) notnulldestino varchar(45) notnullcalculo int(10) notnullemtransito int(2) notnullmotoristaretorno varchar(45) notnull
GOSTEI 0
Wilson Junior
30/03/2011
Tente isto:
Espero ter colaborado.
SELECT DISTINCT transp.Cod, transp.Transporte, transp.KmF FROM TRANSPORTE transp WHERE transp.Cod = (SELECT MAX(transp2.Cod) FROM TRANSPORTE transp2 WHERE transp2.Transporte = transp1.Transporte) ORDER BY transp.Cod DESC
Espero ter colaborado.
GOSTEI 0
André Luiz
30/03/2011
agradesço a força, mas não consegui executar esse script
ele diz que não existe a tabela, e quando coloco a tabela diz não existir o campo transp1
ele diz que não existe a tabela, e quando coloco a tabela diz não existir o campo transp1
GOSTEI 0
André Luiz
30/03/2011
Tente isto:
Espero ter colaborado.
SELECT DISTINCT transp.Cod, transp.Transporte, transp.KmF FROM TRANSPORTE transp WHERE transp.Cod = (SELECT MAX(transp2.Cod) FROM TRANSPORTE transp2 WHERE transp2.Transporte = transp1.Transporte) ORDER BY transp.Cod DESC
Espero ter colaborado.
Obrigado pela ajuda, consegui resolver da seguinte forma.
select * from transportes t1
where km = (select max(km) from transportes t2 where t2.carro = t1.carro)
group by carro;
GOSTEI 0
Wilson Junior
30/03/2011
Eu só me confundi com os alias das tabelas, mas pelo menos você conseguiu entender a lógica que pensei...e o mais importante é que foi solucionada a dúvida.
GOSTEI 0
José
30/03/2011
Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0