Re: [pgbr-geral] Dúvida em select

2016-06-05 Por tôpico Marcos Thomaz
Boa noite,

Em 5 de junho de 2016 20:20, Jean Alysson  escreveu:

> Boa noite,
>
> preciso de ajuda no seguinte cenario:
>
> tenho uma tabela com
> idpedido - idproduto - situacao - quantidade
> 1  1 F  2
> 1  1 C  2
>
> 2  1 F  3
>
> 3  1 F  5
> 3  1 C  5
> 3  1 E  5
>
> onde F=fechado  C=cancelado   E=excluido
>
> preciso do total das quantidades vendidas, descontando o que foi cancelado
> ou excluido, mas sendo cancelado e excluido, desconta 2 vezes e fica
> errado, uso o seguinte select:
>
> select sum(
> case when situacao = 'F' then quantidade
> else
> quantidade * -1
> end) as total
> from tabela
>
> funciona quando o pedido é fechado e cancelado ou fechado e excluido, mas
> no caso do pedido 3
> ele é fechado, cancelado e excluido, ficando com valor negativo, como
> posso resolver ?
>
> Obrigado
> Jean Alysson
>
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



Se fizer assim não funciona:

select sum(quantidade) from tabela
where situacao='F' and
not exists(select 1 from tabela t2 where t2.idpedido=tabela.idpedido and
t2.idproduto=tabela.idproduto and t2.situacao in ('C', 'E'))

Uma outra ideia seria somar as quantidades de acordo com a situação e
utilizar como um subselect.


-- 


Marcos Thomaz da Silva
Analista de Tecnologia da Informação
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Dúvida em select

2016-05-05 Por tôpico Jean Alysson
Em 05/05/2016 11:09, "Tiago José Adami"  escreveu:
>
> Em 4 de maio de 2016 23:10, Jean Alysson  escreveu:
> > Ola Tiago, está correta sua dedução
> > obrigado pela resposta !
> >
> > Estou começando com PostgreSql, então gostaria de saber se dessa forma
eu
> > teria boa performance ?
> > Esta solução com subselect poderia ser feita sem usar 2 selects  ? over
> > partition, with query ou algo assim ?
> >
>
> Olá Jean.
>
> Evite o top posting, prefira sempre escrever abaixo das mensagens
> anteriores. Isto facilita a leitura.
>
> Não é exclusividade do PostgreSQL, o desempenho vai depender de vários
> fatores como: número de registros, índices criados e número de campos
> (atributos) envolvidos na cláusula WHERE.
>
> É possível reescrever esta consulta de várias maneiras. É possível
> também utilizando window functions, mas acredito que o esforço será
> maior, o código SQL será maior e o desempenho será pior, haja vista
> que mais registros serão lidos do banco de dados e trazidos para a
> memória para realização de operações de ordenação, causando uso
> adicional de CPU.
>
> O que vai impactar mais no desempenho da consulta como descrevi são os
> índices sobre a tabela. Por exemplo: você pode criar índices compostos
> colocando os campos utilizados na consulta com maior incidência de
> valores distintos à frente dos campos que possuem menor distinção de
> valores ao longo da tabela.
>
> Certa vez alguém postou aqui na lista um endereço de blog ou site com
> dicas valiosas de como criar índices, se você pesquisar bem no
> histórico [1] vai encontrar.
>
> [1] https://www.postgresql.org.br/historico
>
>
> TIAGO J. ADAMI
> http://www.adamiworks.com
> @tiadami
> 

Ola Tiago, obrigado pela explicação.

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

Re: [pgbr-geral] Dúvida em select

2016-05-04 Por tôpico Jean Alysson
Ola Tiago, está correta sua dedução
obrigado pela resposta !

Estou começando com PostgreSql, então gostaria de saber se dessa forma eu
teria boa performance ?
Esta solução com subselect poderia ser feita sem usar 2 selects  ? over
partition, with query ou algo assim ?

Obrigado pela colaboração
Jean Alysson

Em 4 de maio de 2016 22:25, Tiago José Adami  escreveu:

> Em 4 de maio de 2016 22:19, Jean Alysson  escreveu:
> >
> > Ola, preciso fazer o select abaixo, tem que retornar somente um registro,
> > mas como o campoString é diferente, retornam varios registros, como
> posso resolver ?
> >
> > SELECT  max(campoInteger), campoString
> >  FROM tabela
> >  where outroCampoInteger = 31
> > group by campoInteger, campoString
> >
> > já tentei colocar max(campoString), mas não deu certo , retorna um
> registro, mas misturou o campoInteger de um registro com o campoString de
> outro registro
>
> Deduzi que você quer os dois campos para o valor máximo de
> campoInteger, certo? Veja se isso te ajuda:
>
> SELECT
> t1.campoInteger, t1.campoString
> FROM
> tabela t1
> WHERE
> t1.outroCampoInteger = 31 AND
> t1.campoInteger = (
> SELECT
> MAX(t2.campoInteger)
> FROM
> tabela t2
> WHERE
> t2.outroCampoInteger = t1.outroCampoInteger
> )
>
> TIAGO J. ADAMI
> http://www.adamiworks.com
> @tiadami
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




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

Re: [pgbr-geral] Dúvida em select

2016-05-04 Por tôpico Tiago José Adami
Em 4 de maio de 2016 22:19, Jean Alysson  escreveu:
>
> Ola, preciso fazer o select abaixo, tem que retornar somente um registro,
> mas como o campoString é diferente, retornam varios registros, como posso 
> resolver ?
>
> SELECT  max(campoInteger), campoString
>  FROM tabela
>  where outroCampoInteger = 31
> group by campoInteger, campoString
>
> já tentei colocar max(campoString), mas não deu certo , retorna um registro, 
> mas misturou o campoInteger de um registro com o campoString de outro registro

Deduzi que você quer os dois campos para o valor máximo de
campoInteger, certo? Veja se isso te ajuda:

SELECT
t1.campoInteger, t1.campoString
FROM
tabela t1
WHERE
t1.outroCampoInteger = 31 AND
t1.campoInteger = (
SELECT
MAX(t2.campoInteger)
FROM
tabela t2
WHERE
t2.outroCampoInteger = t1.outroCampoInteger
)

TIAGO J. ADAMI
http://www.adamiworks.com
@tiadami
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] dúvida em select

2009-02-27 Por tôpico Vinicius A. Santos

 SELECT (select relname from pg_class where relfilenode=confrelid) as 
 tabela_fk
   FROM pg_constraint , pg_class
  WHERE pg_constraint.conrelid = pg_class.relfilenode
AND pg_class.relname = 'produtos' and pg_constraint.contype='f';

 Teste e diz no que deu, ok?
Cara, matou a pau !! Era isso mesmo... eu apenas coloquei um DISTINCT, 
pra ficar 100%

Muito Obrigado !!

-- 
Vinicius A. Santos
www.msisolucoes.com.br

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


Re: [pgbr-geral] dúvida em select

2009-02-27 Por tôpico JotaComm
Olá, Vinicius

Acho que a consulta abaixo resolve o seu problema:

SELECT tab_pk.relname AS tab PK,tab_fk.relname AS tab_FK
FROM pg_class tab_pk JOIN pg_constraint ON tab_pk.oid=pg_constraint.confrelid
JOIN pg_class tab_fk ON pg_constraint.conrelid=tab_fk.oid;

[]s

2009/2/26 Vinicius A. Santos vinic...@msisolucoes.com.br:
 Boa noite pessoal

 Alguém sabe me dizer um select onde passo o nome da tabela e ele traz as
 tabelas que são ligadas à ela, por chave estrangeira.

 por exemplo
 select
  tabela_fk
 from
  pg_depend
 where
  tabela = 'produtos';

 tabela_fk
 -
 unidades
 marcas
 etc..
 etc..
 etc..

 --
 Vinicius A. Santos
 www.msisolucoes.com.br

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




-- 
Jota
jotacomm.wordpress.com
dextra.com/postgres
PostgreSQL
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] dúvida em select

2009-02-27 Por tôpico Ribamar Sousa
Grande Jota, grandes respostas.

2009/2/27 JotaComm jota.c...@gmail.com

 Olá, Vinicius

 Acho que a consulta abaixo resolve o seu problema:

 SELECT tab_pk.relname AS tab PK,tab_fk.relname AS tab_FK
 FROM pg_class tab_pk JOIN pg_constraint ON
 tab_pk.oid=pg_constraint.confrelid
 JOIN pg_class tab_fk ON pg_constraint.conrelid=tab_fk.oid;


Mais elegante que minha resposta. Só para tentar melhorar minha imagem,
adicionar a entrada para a tabela 'produtos' :

SELECT tab_pk.relname AS tab PK,tab_fk.relname AS tab_FK
FROM pg_class tab_pk JOIN pg_constraint ON
tab_pk.oid=pg_constraint.confrelid
JOIN pg_class tab_fk ON pg_constraint.conrelid=tab_fk.oid and
tab_fk.relname='produtos';

Ambas já foram para o novo site: postgresql.ribafs.org, seção Linguagem SQL
- Dicas sobre o Catálogo do Sistema.


 []s

 2009/2/26 Vinicius A. Santos vinic...@msisolucoes.com.br:
  Boa noite pessoal
 
  Alguém sabe me dizer um select onde passo o nome da tabela e ele traz as
  tabelas que são ligadas à ela, por chave estrangeira.
 
  por exemplo
  select
   tabela_fk
  from
   pg_depend
  where
   tabela = 'produtos';
 
  tabela_fk
  -
  unidades
  marcas
  etc..
  etc..
  etc..
 
  --
  Vinicius A. Santos
  www.msisolucoes.com.br
 
  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 



 --
 Jota
 jotacomm.wordpress.com
 dextra.com/postgres
 PostgreSQL
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




-- 
Que tal cultivar colaboração ao invés de competição?

Ribamar FS - rib...@ribafs.org
   http://ribafs.org
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] dúvida em select

2009-02-26 Por tôpico Ribamar Sousa
Ganhando tempo:

Entre com o OID da tabela produtos:

select p.confrelid from pg_class c, pg_constraint p where c.relfilenode =
'20267'
and p.conrelid='20267' and p.confrelid 0

Isso retorna os OIDs das relacionadas.
Agora é contigo ou com outro colega, para entrar nome e trazer os nomes.

2009/2/26 Vinicius A. Santos vinic...@msisolucoes.com.br

 Boa noite pessoal

 Alguém sabe me dizer um select onde passo o nome da tabela e ele traz as
 tabelas que são ligadas à ela, por chave estrangeira.

 por exemplo
 select
  tabela_fk
 from
  pg_depend
 where
  tabela = 'produtos';

 tabela_fk
 -
 unidades
 marcas
 etc..
 etc..
 etc..

 --
 Vinicius A. Santos
 www.msisolucoes.com.br

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




-- 
Que tal cultivar colaboração ao invés de competição?

Ribamar FS - rib...@ribafs.org
   http://ribafs.org
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] dúvida em select

2009-02-26 Por tôpico Marcelo Costa
Fala Ribamar de volta

2009/2/26 Ribamar Sousa rib...@gmail.com:
 Ganhando tempo:

 Entre com o OID da tabela produtos:

 select p.confrelid from pg_class c, pg_constraint p where c.relfilenode =
 '20267'
     and p.conrelid='20267' and p.confrelid 0

Se ele criou a tabela com a opção sem OID isso não funcionará.



 Isso retorna os OIDs das relacionadas.
 Agora é contigo ou com outro colega, para entrar nome e trazer os nomes.

 2009/2/26 Vinicius A. Santos vinic...@msisolucoes.com.br

 Boa noite pessoal

 Alguém sabe me dizer um select onde passo o nome da tabela e ele traz as
 tabelas que são ligadas à ela, por chave estrangeira.

 por exemplo
 select
  tabela_fk
 from
  pg_depend
 where
  tabela = 'produtos';

 tabela_fk
 -
 unidades
 marcas
 etc..
 etc..
 etc..

Mágica não dá para fazer, passa pelo menos a estrutura de suas tabelas
para que possamos te ajudar. Você tem pelo menos o modelo do banco ?

-- 
Marcelo Costa
www.marcelocosta.net
-
“Os muito poderosos e os muito estúpidos possuem uma coisa em comum.
Ao invés de alterarem as suas visões para se ajustarem aos fatos do
mundo, eles alteram os fatos para ajustá-los às suas visões.”,

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


Re: [pgbr-geral] dúvida em select

2009-02-26 Por tôpico Ribamar Sousa
Acho que agora vai:

SELECT (select relname from pg_class where relfilenode=confrelid) as
tabela_fk
  FROM pg_constraint , pg_class
 WHERE pg_constraint.conrelid = pg_class.relfilenode
   AND pg_class.relname = 'produtos' and pg_constraint.contype='f';

Teste e diz no que deu, ok?

2009/2/26 Vinicius A. Santos vinic...@msisolucoes.com.br

 Boa noite pessoal

 Alguém sabe me dizer um select onde passo o nome da tabela e ele traz as
 tabelas que são ligadas à ela, por chave estrangeira.

 por exemplo
 select
  tabela_fk
 from
  pg_depend
 where
  tabela = 'produtos';

 tabela_fk
 -
 unidades
 marcas
 etc..
 etc..
 etc..

 --
 Vinicius A. Santos
 www.msisolucoes.com.br

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




-- 
Que tal cultivar colaboração ao invés de competição?

Ribamar FS - rib...@ribafs.org
   http://ribafs.org
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] dúvida em select

2009-02-26 Por tôpico Ribamar Sousa
2009/2/26 Marcelo Costa marcelojsco...@gmail.com

 Fala Ribamar de volta


Então, quando se precisa sempre se volta. :)



 2009/2/26 Ribamar Sousa rib...@gmail.com:
  Ganhando tempo:
 
  Entre com o OID da tabela produtos:
 
  select p.confrelid from pg_class c, pg_constraint p where c.relfilenode =
  '20267'
  and p.conrelid='20267' and p.confrelid 0

 Se ele criou a tabela com a opção sem OID isso não funcionará.

 Esqueci que estava com o PGAdmin na minha frente, e mas veja a minha
proxima mensagem.


 
  Isso retorna os OIDs das relacionadas.
  Agora é contigo ou com outro colega, para entrar nome e trazer os nomes.
 
  2009/2/26 Vinicius A. Santos vinic...@msisolucoes.com.br
 
  Boa noite pessoal
 
  Alguém sabe me dizer um select onde passo o nome da tabela e ele traz as
  tabelas que são ligadas à ela, por chave estrangeira.
 
  por exemplo
  select
   tabela_fk
  from
   pg_depend
  where
   tabela = 'produtos';
 
  tabela_fk
  -
  unidades
  marcas
  etc..
  etc..
  etc..

 Mágica não dá para fazer,


Quem disse? O Mister M tá tornando ela também open source. :)

 passa pelo menos a estrutura de suas tabelas
 para que possamos te ajudar. Você tem pelo menos o modelo do banco ?

 --
 Marcelo Costa
 www.marcelocosta.net
 -
 “Os muito poderosos e os muito estúpidos possuem uma coisa em comum.
 Ao invés de alterarem as suas visões para se ajustarem aos fatos do
 mundo, eles alteram os fatos para ajustá-los às suas visões.”,

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




-- 
Que tal cultivar colaboração ao invés de competição?

Ribamar FS - rib...@ribafs.org
   http://ribafs.org
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] dúvida em select

2009-02-26 Por tôpico Osvaldo Kussama
2009/2/26 Marcelo Costa marcelojsco...@gmail.com:
 Fala Ribamar de volta

 2009/2/26 Ribamar Sousa rib...@gmail.com:
 Ganhando tempo:

 Entre com o OID da tabela produtos:

 select p.confrelid from pg_class c, pg_constraint p where c.relfilenode =
 '20267'
     and p.conrelid='20267' and p.confrelid 0

 Se ele criou a tabela com a opção sem OID isso não funcionará.

Creio que as tabelas do catálogo sempre tem OID. As tabelas criadas
pelos usuários é que normalmente não tem OID.






 Isso retorna os OIDs das relacionadas.
 Agora é contigo ou com outro colega, para entrar nome e trazer os nomes.

 2009/2/26 Vinicius A. Santos vinic...@msisolucoes.com.br

 Boa noite pessoal

 Alguém sabe me dizer um select onde passo o nome da tabela e ele traz as
 tabelas que são ligadas à ela, por chave estrangeira.

 por exemplo
 select
  tabela_fk
 from
  pg_depend
 where
  tabela = 'produtos';

 tabela_fk
 -
 unidades
 marcas
 etc..
 etc..
 etc..

 Mágica não dá para fazer, passa pelo menos a estrutura de suas tabelas
 para que possamos te ajudar. Você tem pelo menos o modelo do banco ?


OIDs are not added to user-created tables, unless WITH OIDS is
specified when the table is created, or the default_with_oids
configuration variable is enabled.
http://www.postgresql.org/docs/current/interactive/datatype-oid.html

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