Re: [pgbr-geral] Select Join em Historico de Status.
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/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/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.
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/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.
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