2009/2/3 Lucas Paz <lucas...@gmail.com>:
> Olá novamente...
>
> Dando mais detalhes...
>
> Oswaldo:
> Não sei se entendi corretamente mas um GROUP BY e um MAX(data) não
> resolveria?
> Ou o status que deseja retornar não é necessariamente o mais recente?
>
> Osvaldo não resolve pq os status não estão em ordem! como disse nem tudo são
> flores...
>
>
> Nilson:
> select distinct l.nom, l.data_entrada, s.nome
> from lancamentos l, status s, historico h
> where l.id_lancamento = h.id_lancamento
> and h.id_status = s.id_status
> and (s.id_status = "id do pago" or s.id_status = "id do pendente")
>
> Ao Nilson o Select que você mandou também não resolve pq eu preciso saber se
> o lancamento zz  teve cadastrado os status x ou y, mais tenho que retornar
> apenas 1 vez o lancamento zz.
>
> Quero alguma coisa que retorne se o lancamento zz teve os status x e y
> cadastrados ou se teve x ou y cadastrados, para que quando for com o status
> x e y apareçam em uma tabela e quando forem x ou y apareçam em outra tabela,
> e lembrando que o lancamento zz pode ter os status x e y cadastrados
> aleatoreamente...
>
> consegui explicar?
>


Dê uma olhada no exemplo de função de agregação "array_accum" em:
http://www.postgresql.org/docs/current/interactive/xaggr.html

Usando esta função em um "GROUP BY lançamento" você obterá um array
dos status registrados para este lançamento.

Daí usando, por exemplo, o operador @> (contains) ou <@ (is contained
by) você conseguirá determinar se apenas um, ou mais de um, dos status
está(ão) registrado(s) para o lançamento.

Osvaldo
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a