Primeiro. Evite top-posting nessa lista. Ok?

2014/1/22 Antonio Cesar <[email protected]>

>  Seria assim
>
>
> Cliente | Pedido
>      1  | 10
>      1  | 15
>      1  | 18
>      1  | 20
>      2  | 11
>
>

O que você quer é melhor (principalmente em termos de performance)
alcançado usando um recurso somente presente na versão 9.3 do PostgreSQL,
chamado LATERAL JOIN.

Simples assim:

SELECT c.codigo, c.nome, v.*
FROM cliente c,
    LATERAL(
        SELECT vi.numero_venda, ...
        FROM venda vi
        WHERE c.codigo = vi.codigo_cliente
        ORDER BY vi.datahoravenda DESC
        LIMIT 4
    ) v;

Por isso perguntei se você podia atualizar para a 9.3. Fazer o mesmo (e com
o mesmo desempenho) numa versão anterior é bem trabalhoso e complexo.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a