Re: [pgbr-geral] Select Join em Historico de Status.

2009-02-06 Por tôpico Lucas Paz
Desculpe pela demora na resposta mais por contratempos pessoais só pude ver
agora.

2009/2/4 Arthur M. Meskelis hallofriendl...@gmail.com

 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...

 # para o caso do 'ou' ele vai pegar qualquer 'lancamento' que esteja
 em 'status' independente do 'status'
 SELECT DISTINCT lancamento FROM (SELECT lancamento, count(0) c FROM
 lancamentos a INNER JOIN status b ON a.id_lancamento =
 b.id_lancamento) a WHERE c1;

 # para o caso do 'e' ele vai pegar qualquer 'lancamento' que esteja em
 'status' com mais de um 'status'
 SELECT DISTINCT lancamento FROM (SELECT lancamento, count(0) c FROM
 lancamentos a INNER JOIN status b ON a.id_lancamento =
 b.id_lancamento) a WHERE c2;


Arthur, resolveu com 1 modificação...

SELECT DISTINCT lancamento l FROM (SELECT lancamento, count(0) c FROM
lancamentos a INNER JOIN status b ON a.id_lancamento =
b.id_lancamento and a.id_lancamento=l.id_lancamento) a WHERE c2;


Agradeço a atenção de todos




 --
 --
  1. Notebook para você ficar livre e programar a vontade: R$ 2300
  2. Curso de Programação/SysAdmin/DBA: R$ 5000
  3. Pedir a solução pronta para um problema numa lista de discussão:
 Não tem preço !

 E para todas as outras existe RTFM, STFW e  LMGTFY
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




-- 
Lucas Paz
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Select Join em Historico de Status.

2009-02-04 Por tôpico Arthur M. Meskelis
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...

# para o caso do 'ou' ele vai pegar qualquer 'lancamento' que esteja
em 'status' independente do 'status'
SELECT DISTINCT lancamento FROM (SELECT lancamento, count(0) c FROM
lancamentos a INNER JOIN status b ON a.id_lancamento =
b.id_lancamento) a WHERE c1;

# para o caso do 'e' ele vai pegar qualquer 'lancamento' que esteja em
'status' com mais de um 'status'
SELECT DISTINCT lancamento FROM (SELECT lancamento, count(0) c FROM
lancamentos a INNER JOIN status b ON a.id_lancamento =
b.id_lancamento) a WHERE c2;




-- 
--
 1. Notebook para você ficar livre e programar a vontade: R$ 2300
 2. Curso de Programação/SysAdmin/DBA: R$ 5000
 3. Pedir a solução pronta para um problema numa lista de discussão:
Não tem preço !

E para todas as outras existe RTFM, STFW e  LMGTFY
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Select Join em Historico de Status.

2009-02-03 Por tôpico Osvaldo Kussama
2009/2/3 Lucas Paz lucas...@gmail.com:
 Olá,

 Vamos a duvida:

 tenho as tabelas LANCAMENTOS, HISTORICO_LANCAMENTOS e STATUS .

 LANCAMENTOS - PK(id_lancamento),nome,data_entrada e etc.
 STATUS - PK(id_status), nome
 HISTORICO_LANCAMENTOS - PK(id_hist_lancamento), FK(id_lancamento),
 FK(id_status), data, usuario e etc...

 Acontece o seguinte, na tabela Lancamentos tenho os dados dos contratos, na
 tabela STATUS apenas os status que podem existir de determinado contrato, na
 tabela HISTORICO_LANCAMENTOS tenho os historicos de alteração dos status do
 contrato.
 os status dos contratos são: PAGO, PENDENTE, FALTA ALGUMA COISA, ENVIADO e
 etc.


 Nem tudo são flores...

 1 contrato pode ter mais de 1 status ao mesmo tempo, ou seja um contrato
 pode estar pendente e ser pago... até ai blz...
 O que preciso fazer é um select que pegue os contratos que por exemplo
 tenham os status PAGO e PENDENTE. Preciso retornar o mesmo apenas 1 vez.
 Atualmente controlo isso por flags, a cada mudança no historico eu mudo 1
 flag na tabela LANCAMENTOS. Funciona, mais gostaria de algo mais automatico
 pois se acrescento 1 status tenho que criar novas flags alterar os triggers
 e etc...

 alguem tem alguma sugestão?



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
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Select Join em Historico de Status.

2009-02-03 Por tôpico Nilson Chagas
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)

[]s
Nilson Chagas - Ubuntu User 25794
---
Visite:
http://www.amados.com.br/podcast
http://tempodesalvacao.blogspot.com/
http://bbnradio.org/




2009/2/3 Lucas Paz lucas...@gmail.com

 Olá,

 Vamos a duvida:

 tenho as tabelas LANCAMENTOS, HISTORICO_LANCAMENTOS e STATUS .

 LANCAMENTOS - PK(id_lancamento),nome,data_entrada e etc.
 STATUS - PK(id_status), nome
 HISTORICO_LANCAMENTOS - PK(id_hist_lancamento), FK(id_lancamento),
 FK(id_status), data, usuario e etc...

 Acontece o seguinte, na tabela Lancamentos tenho os dados dos contratos, na
 tabela STATUS apenas os status que podem existir de determinado contrato, na
 tabela HISTORICO_LANCAMENTOS tenho os historicos de alteração dos status do
 contrato.
 os status dos contratos são: PAGO, PENDENTE, FALTA ALGUMA COISA, ENVIADO
 e etc.


 Nem tudo são flores...

 1 contrato pode ter mais de 1 status ao mesmo tempo, ou seja um contrato
 pode estar pendente e ser pago... até ai blz...
 O que preciso fazer é um select que pegue os contratos que por exemplo
 tenham os status PAGO e PENDENTE. Preciso retornar o mesmo apenas 1 vez.
 Atualmente controlo isso por flags, a cada mudança no historico eu mudo 1
 flag na tabela LANCAMENTOS. Funciona, mais gostaria de algo mais automatico
 pois se acrescento 1 status tenho que criar novas flags alterar os triggers
 e etc...

 alguem tem alguma sugestão?



 att.

 --
 Lucas Paz


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


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


Re: [pgbr-geral] Select Join em Historico de Status.

2009-02-03 Por tôpico Osvaldo Kussama
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


Re: [pgbr-geral] Select Join em Historico de Status.

2009-02-03 Por tôpico Lucas Paz
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?

Att.



2009/2/3 Nilson Chagas nilson.chagas.si...@gmail.com





 []s
 Nilson Chagas - Ubuntu User 25794
 ---
 Visite:
 http://www.amados.com.br/podcast
 http://tempodesalvacao.blogspot.com/
 http://bbnradio.org/




 2009/2/3 Lucas Paz lucas...@gmail.com

 Olá,


 Vamos a duvida:

 tenho as tabelas LANCAMENTOS, HISTORICO_LANCAMENTOS e STATUS .

 LANCAMENTOS - PK(id_lancamento),nome,data_entrada e etc.
 STATUS - PK(id_status), nome
 HISTORICO_LANCAMENTOS - PK(id_hist_lancamento), FK(id_lancamento),
 FK(id_status), data, usuario e etc...

 Acontece o seguinte, na tabela Lancamentos tenho os dados dos contratos,
 na tabela STATUS apenas os status que podem existir de determinado contrato,
 na tabela HISTORICO_LANCAMENTOS tenho os historicos de alteração dos status
 do contrato.
 os status dos contratos são: PAGO, PENDENTE, FALTA ALGUMA COISA, ENVIADO
 e etc.


 Nem tudo são flores...

 1 contrato pode ter mais de 1 status ao mesmo tempo, ou seja um contrato
 pode estar pendente e ser pago... até ai blz...
 O que preciso fazer é um select que pegue os contratos que por exemplo
 tenham os status PAGO e PENDENTE. Preciso retornar o mesmo apenas 1 vez.
 Atualmente controlo isso por flags, a cada mudança no historico eu mudo 1
 flag na tabela LANCAMENTOS. Funciona, mais gostaria de algo mais automatico
 pois se acrescento 1 status tenho que criar novas flags alterar os triggers
 e etc...

 alguem tem alguma sugestão?



 att.

 --
 Lucas Paz


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



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




-- 
Lucas Paz
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral