Obrigado Leandro

Já achei a resposta, faltava apenas o alias do campo que era feito o max()

ficou assim:

SELECT    
    p.nome,
    f.fone,
    e.email
FROM pessoas p
Left JOIN ( select pessoa_id, max(fone) as fone from fones_pessoas group by 
pessoa_id) f 
ON(p.pessoa_id=f.pessoa_id)
LEFT JOIN ( select pessoa_id, max(email) as email from Emails group by 
pessoa_id) e 
ON(p.pessoa_id=e.pessoa_id)
WHERE empresa_id = 538;





> Date: Thu, 28 Apr 2011 14:02:16 -0300
> From: [email protected]
> To: [email protected]
> Subject: Re: [pgbr-geral] Select para retornar ultimo valor de cada ID
> 
> Em 28 de abril de 2011 13:37, Jefferson Dias <[email protected]> 
> escreveu:
> > Boa tarde Leandro,
> 
> ....
> 
> >
> > SELECT
> >     p.pessoa_id,
> >     p.nome,
> >     fone
> > FROM pessoas p
> > LEFT JOIN ( select pessoa_id, max(fone), from fones_pessoas group by
> > pessoa_id) f
> > ON(p.pessoa_id=f.pessoa_id);
> 
> ........
> 
> >
> 
> Não sei se entendi bem sua dúvida, mas acho que algo mais simples
> resolveria seu problema:
> 
> select pes.*, (select numero from telefone where id_pessoa = pes.id
> limit 1) telefone
> from pessoa pes;
> 
> Neste caso, dependendo do tamanho de sua tabela essa consulta pode ser
> um pouco lenta, mas se você filtrar a pessoa por algum campo com
> índice você terá uma desempenho melhor.
> 
> -- 
> Marcone Peres - DBA
> http://www.linkedin.com/in/marconeperes
> (61) 8146-0028
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
                                          
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a