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