Magrini 0 Denunciar post Postado Dezembro 17, 2010 Pessoal, estou com uma situação que não consigo resolver. Estrutura das tabelas: VEICULO ve_cod (chave primaria) ve_placa POSICAO pos_cod (chave primaria) ve_cod(chave estrangeira) pos_datahora pos_posicao Preciso puxar a posição mais recente da tabela posição de cada veículo da tabela veículo. Usei a instrução a seguir: select * from posicao as p inner join (select max(pos_datahora) pos_datahora,ve_cod from posicao group by ve_cod) as p2 on (p.ve_cod=p2.ve_cod and p.pos_datahora=p2.pos_datahora) Porém o resultado que consegui foi: pos_cod | ve_cod | pos_datahora | pos_posicao 1001 | 1 | 2010-12-17 18:00:00 | POSICAO TESTE1 1002 | 2 | 2010-12-17 19:00:00 | POSICAO TESTE2 1003 | 3 | 2010-12-17 20:00:00 | POSICAO TESTE3 Com essa instrução eu não consigo trazer a placa do veículo da tabela veiculo. Também tentei de outra forma: SELECT * from veiculo left join (select posicao.pos_cod, posicao.ve_cod, posicao.pos_posicao, posicao.pos_lat, posicao.pos_long, posicao.pos_ignicao, max(posicao.pos_datahora)FROM posicao GROUP BY posicao.ve_cod) AS posicao ON veiculo.ve_cod=posicao.ve_cod Desta forma ele informa os dados do veiculo corretamente, o campo pos_datahora corretamente, porém o campo pos_posicao ele pega os dados dos 3 primeiros registros da tabela posicao e não o correspondente do registro. Alguém conseguiria me ajudar? Agradeço Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Dezembro 18, 2010 VEICULOve_cod (chave primaria) ve_placa POSICAO pos_cod (chave primaria) ve_cod(chave estrangeira) pos_datahora pos_posicao Preciso puxar a posição mais recente da tabela posição de cada veículo da tabela veículo. posicao mais recente select * from posicao p1 where pos_cod = (select max(pos_cod) from posicao p2 where p2.ve_cod = p1.ve_cod) Junta com o veiculo select v.*,p1.* from veiculo v,posicao p1 where p1.ve_cod = v.ve_cod and p1.pos_cod = (select max(pos_cod) from posicao p2 where p2.ve_cod = p1.ve_cod) Creio ser isto. Compartilhar este post Link para o post Compartilhar em outros sites
Magrini 0 Denunciar post Postado Dezembro 18, 2010 Putz... Deu certíssimo Motta. Eu tinha achado uma solução, mas estava fazendo o select max em cima do campo pos_datahora. Nem tinha me tocado que daria pra fazer pelo código da posição. Obrigado pela ajuda! Abraços Bruno Compartilhar este post Link para o post Compartilhar em outros sites