Fórum Dificuldade em executar um select #398452

30/03/2011

0

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.

 
André Luiz

André Luiz

Responder

Posts

30/03/2011

Wilson Junior

Coloque aqui a estrutura das suas tabelas, pois está meio confuso este seu SQL.

Aguardo retorno.
Responder

Gostei + 0

30/03/2011

André Luiz

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
Responder

Gostei + 0

30/03/2011

André Luiz


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
    

 
Responder

Gostei + 0

30/03/2011

Wilson Junior

Tente isto:
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.
Responder

Gostei + 0

30/03/2011

André Luiz

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
Responder

Gostei + 0

30/03/2011

André Luiz


Tente isto:
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;
Responder

Gostei + 0

01/04/2011

Wilson Junior

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.
Responder

Gostei + 0

29/04/2013

José

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar