Ajuda com SQL e BD

View: New views
14 Messages — Rating Filter:   Alert me  

Ajuda com SQL e BD

by tetraetila® :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.
Estou precisando de uma ajuda, o Firebird não me serve. Preciso aprender a fazer o DBLink no Postgres
para poder utilizar mais de um BD na minha aplicação. Qualquer ajuda será bem vinda.
Veja a situação abaixo:
 
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
Olá

Estou migrando um sistema para Firebird e me deparei com um problema que gostaria de debater com vocês.
Tenho um BD que possui as tabelas com os dados de clientes, fornecedores, transportadores e vendedores, além
das tabelas de tipos de documentos, plano de contas, bancos, etc. Seria a base principal.
Quando estou na Empresa01 faço um "select" que me retorna o tipo de documento na tabela A017 e a descrição do
documento que está na tabela A014,  o tipo de fornecedor na tabela A017 e o nome do fornecedor  na tabela A001
e por aí vai, vendedores, transportadores, plano de contas, etc. A tabela A017 é de movimentação de contas a pagar, porém no sistema
eu trabalho com as Empresas02, 03, "n"... As tabelas padrões são as mesmas, eu mudo apenas os arquivos de movimentação
para outro BD. O problema é que eu não sei como fazer isto ou se é possível fazê-lo no Firebird.  Ou seja, dar um "select" que
busque dados em dois BD's distintos. Quando o banco de dados é o mesmo o "select" abaixo  funciona perfeitamente,
porém quando mudo para a Empresa02 não funciona, pois não sei buscar as informações das tabelas A014 -
A001 - A016 - A011 que estão no BD001. Isto que necessito seria em Postgres, um "DBLink", já andei pesquisando.
Se alguém tiver uma sugestão que possa me ajudar mesmo que seja fazer o "DBLink" no Postgress, agradeço desde já.
Pois esta está sendo a "pedra no meu caminho" para terminar o sistema, resolvendo isto vários problemas serão
solucionados de uma vez só. Estamos saindo do Clipper e DBF.
 
Muito obrigado!
Vejam o select que funciona quando o BD é único:

select a017.a017_docu, a017.a017_tipo, A014_DESC, a017.a017_dtem,
a017.a017_tpfo, a017.a017_forn, A001_NOME, a017.a017_hist,
a017.a017_dtvn, a017.a017_vavn, a017.a017_dtpg, a017.a017_vapg,
a017.a017_atra, a017.a017_cdbx, a017.a017_banc, A016_DESC,
a017.a017_cheq, a017.a017_his1, a017.a017_digi, a017.a017_plan, A011_DESC,
a017.a017_dupl, a017.a017_docu as ca017_docu, a017.a017_tipo as ca017_tipo

from a001017_tbl a017

   left outer join a001014_tbl on (a017.a017_tipo = a001014_tbl.a014_chv)
   left outer join a001001_tbl on (a017.a017_tpfo = a001001_tbl.a001_tipo) and  (a017.a017_forn = a001001_tbl.a001_chv)
   left outer join a001016_tbl on (a017.a017_banc = a001016_tbl.a016_chv)
   left outer join a001011_tbl on (a017.a017_plan = a001011_tbl.a011_redu)


O que retornaria mais ou menos conforme abaixo:

---------------------------------------------------------------------------------------------------------------------
A017_DOCU | A017_TIPO | A014_DESC | A017_DTEM | A017_TPFO | A017_FORN | A001_NOME           |   
---------------------------------------------------------------------------------------------------------------------
52.521-U        | 003              | Duplicatas      |16/09/2008      | 001               | 000565          | Santa Maria S/A.        |
----------------------------------------------------------------------------------------------------------------------
36.878-A        | 005              | Cheques         |16/08/2008     | 001               | 000098          | Papelão & Cia.            |
----------------------------------------------------------------------------------------------------------------------
14.315-B        | 001              | Pagamentos     |16/09/2007    | 001               | 000001          | Pagamentos diversos    |
----------------------------------------------------------------------------------------------------------------------
 
Adilson Nunes
 

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

Re: Ajuda com SQL e BD

by Euler Taveira de Oliveira-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

tetraetila® escreveu:
> Estou precisando de uma ajuda, o Firebird não me serve. Preciso aprender
> a fazer o DBLink no Postgres
> para poder utilizar mais de um BD na minha aplicação. Qualquer ajuda
> será bem vinda.
O que você precisa não é de acesso a múltiplos bancos; você precisa de
múltiplos esquemas [1]. Você pode criar vários esquemas empresa01,
empresa03, ..., empresan e colocar as tabelas de movimentação em cada um
dos esquemas. As tabelas são acessadas utilizando
empresa01.movimentacao, empresa02.movimentacao, ...,
empresan.movimentacao. Além disso, você pode restringir acesso a esquemas.

[1] http://www.postgresql.org/docs/8.3/static/sql-createschema.html


--
  Euler Taveira de Oliveira
  http://www.timbira.com/
_______________________________________________
pgbr-geral mailing list
pgbr-geral@...
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

RES: Ajuda com SQL e BD

by Guilherme Vianna de Aguiar :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.

Para usar dblink, você precisa ter instaladas as funções.

 

A sintaxe eh

select *

from (‘_CONN_BANCO_REMOTO_’,  ‘_SELECT_BANCO_REMOTO’)

as t1 (_COL_BANCO_REMOTO_ tipo);

 

Um exemplo

 

select *

from dblink('dbname=teste hostaddr=10.0.0.0 user=postgres password=postgres port=5432',

            'select data

             from dw_data

             where substring(data::varchar, 1, 7) = ''2008-08''  ')

    as t1(data varchar)

 

[],

Guilherme Vianna

 

 

De: pgbr-geral-bounces@... [mailto:pgbr-geral-bounces@...] Em nome de tetraetila®
Enviada em: terça-feira, 23 de setembro de 2008 23:34
Para: pgbr-geral@...
Assunto: [pgbr-geral] Ajuda com SQL e BD

 

Estou precisando de uma ajuda, o Firebird não me serve. Preciso aprender a fazer o DBLink no Postgres

para poder utilizar mais de um BD na minha aplicação. Qualquer ajuda será bem vinda.

Veja a situação abaixo:

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Olá


Estou migrando um sistema para Firebird e me deparei com um problema que gostaria de debater com vocês.
Tenho um BD que possui as tabelas com os dados de clientes, fornecedores, transportadores e vendedores, além
das tabelas de tipos de documentos, plano de contas, bancos, etc. Seria a base principal.

Quando estou na Empresa01 faço um "select" que me retorna o tipo de documento na tabela A017 e a descrição do
documento que está na tabela A014,  o tipo de fornecedor na tabela A017 e o nome do fornecedor  na tabela A001
e por aí vai, vendedores, transportadores, plano de contas, etc. A tabela A017 é de movimentação de contas a pagar, porém no sistema
eu trabalho com as Empresas02, 03, "n"... As tabelas padrões são as mesmas, eu mudo apenas os arquivos de movimentação
para outro BD. O problema é que eu não sei como fazer isto ou se é possível fazê-lo no Firebird.  Ou seja, dar um "select" que
busque dados em dois BD's distintos. Quando o banco de dados é o mesmo o "select" abaixo  funciona perfeitamente,
porém quando mudo para a Empresa02 não funciona, pois não sei buscar as informações das tabelas A014 -
A001 - A016 - A011 que estão no BD001. Isto que necessito seria em Postgres, um "DBLink", já andei pesquisando.

Se alguém tiver uma sugestão que possa me ajudar mesmo que seja fazer o "DBLink" no Postgress, agradeço desde já.
Pois esta está sendo a "pedra no meu caminho" para terminar o sistema, resolvendo isto vários problemas serão

solucionados de uma vez só. Estamos saindo do Clipper e DBF.

 

Muito obrigado!

Vejam o select que funciona quando o BD é único:

select a017.a017_docu, a017.a017_tipo, A014_DESC, a017.a017_dtem,
a017.a017_tpfo, a017.a017_forn, A001_NOME, a017.a017_hist,
a017.a017_dtvn, a017.a017_vavn, a017.a017_dtpg, a017.a017_vapg,
a017.a017_atra, a017.a017_cdbx, a017.a017_banc, A016_DESC,
a017.a017_cheq, a017.a017_his1, a017.a017_digi, a017.a017_plan, A011_DESC,
a017.a017_dupl, a017.a017_docu as ca017_docu, a017.a017_tipo as ca017_tipo

from a001017_tbl a017

   left outer join a001014_tbl on (a017.a017_tipo = a001014_tbl.a014_chv)
   left outer join a001001_tbl on (a017.a017_tpfo = a001001_tbl.a001_tipo) and  (a017.a017_forn = a001001_tbl.a001_chv)
   left outer join a001016_tbl on (a017.a017_banc = a001016_tbl.a016_chv)
   left outer join a001011_tbl on (a017.a017_plan = a001011_tbl.a011_redu)


O que retornaria mais ou menos conforme abaixo:


---------------------------------------------------------------------------------------------------------------------
A017_DOCU | A017_TIPO | A014_DESC | A017_DTEM | A017_TPFO | A017_FORN | A001_NOME           |   
---------------------------------------------------------------------------------------------------------------------
52.521-U        | 003              | Duplicatas      |16/09/2008      | 001               | 000565          | Santa Maria S/A.        |
----------------------------------------------------------------------------------------------------------------------
36.878-A        | 005              | Cheques         |16/08/2008     | 001               | 000098          | Papelão & Cia.            |
----------------------------------------------------------------------------------------------------------------------
14.315-B        | 001              | Pagamentos     |16/09/2007    | 001               | 000001          | Pagamentos diversos    |
----------------------------------------------------------------------------------------------------------------------

 

Adilson Nunes

 

No virus found in this incoming message.
Checked by AVG - http://www.avg.com
Version: 8.0.169 / Virus Database: 270.7.1/1688 - Release Date: 24/9/2008 06:29


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

Re: RES: Ajuda com SQL e BD

by tetraetila® :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.
Ok! Guilherme, muito obrigado!
 
Mais o problema é integrar o DBLink dentro do meu select, onde ele faz referência a tabela de outro BD seria intercalado o select do DBLink. Fazer
o DBLink sozinho eu sei, como montar o select completo é que não. Tipo:
 
 

    select a017.a017_docu, a017.a017_tipo, ** DBLINK a014_desc **, a017.a017_dtem,

    a017.a017_tpfo, a017.a017_forn, ** DBLINK a001_nome **, a017.a017_hist,

    a017.a017_dtvn, a017.a017_vavn, a017.a017_dtpg, a017.a017_vapg,

    a017.a017_atra, a017.a017_cdbx, a017.a017_banc, ** DBLINK a016_desc **,

    a017.a017_cheq, a017.a017_his1, a017.a017_digi, a017.a017_plan, **DBLINK a011_desc **,

    a017.a017_dupl, a017.a017_docu as ca017_docu, a017.a017_tipo as ca017_tipo

 

    from a001017_tbl a017

 

    left outer join a001014_tbl on (a017.a017_tipo = a001014_tbl.a014_chv)

    left outer join a001001_tbl on (a017.a017_tpfo = a001001_tbl.a001_tipo) and (a017.a017_forn = a001001_tbl.a001_chv)

    left outer join a001016_tbl on (a017.a017_banc = a001016_tbl.a016_chv)

    left outer join a001011_tbl on (a017.a017_plan = a001011_tbl.a011_redu)


 
Adilson Nunes
 
 
----- Original Message -----
Sent: Wednesday, September 24, 2008 9:53 AM
Subject: [pgbr-geral] RES: Ajuda com SQL e BD

Para usar dblink, você precisa ter instaladas as funções.

 

A sintaxe eh

select *

from (‘_CONN_BANCO_REMOTO_’,  ‘_SELECT_BANCO_REMOTO’)

as t1 (_COL_BANCO_REMOTO_ tipo);

 

Um exemplo

 

select *

from dblink('dbname=teste hostaddr=10.0.0.0 user=postgres password=postgres port=5432',

            'select data

             from dw_data

             where substring(data::varchar, 1, 7) = ''2008-08''  ')

    as t1(data varchar)

 

[],

Guilherme Vianna

 

 

De: pgbr-geral-bounces@... [mailto:pgbr-geral-bounces@...] Em nome de tetraetila®
Enviada em: terça-feira, 23 de setembro de 2008 23:34
Para: pgbr-geral@...
Assunto: [pgbr-geral] Ajuda com SQL e BD

 

Estou precisando de uma ajuda, o Firebird não me serve. Preciso aprender a fazer o DBLink no Postgres

para poder utilizar mais de um BD na minha aplicação. Qualquer ajuda será bem vinda.

Veja a situação abaixo:

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Olá


Estou migrando um sistema para Firebird e me deparei com um problema que gostaria de debater com vocês.
Tenho um BD que possui as tabelas com os dados de clientes, fornecedores, transportadores e vendedores, além
das tabelas de tipos de documentos, plano de contas, bancos, etc. Seria a base principal.

Quando estou na Empresa01 faço um "select" que me retorna o tipo de documento na tabela A017 e a descrição do
documento que está na tabela A014,  o tipo de fornecedor na tabela A017 e o nome do fornecedor  na tabela A001
e por aí vai, vendedores, transportadores, plano de contas, etc. A tabela A017 é de movimentação de contas a pagar, porém no sistema
eu trabalho com as Empresas02, 03, "n"... As tabelas padrões são as mesmas, eu mudo apenas os arquivos de movimentação
para outro BD. O problema é que eu não sei como fazer isto ou se é possível fazê-lo no Firebird.  Ou seja, dar um "select" que
busque dados em dois BD's distintos. Quando o banco de dados é o mesmo o "select" abaixo  funciona perfeitamente,
porém quando mudo para a Empresa02 não funciona, pois não sei buscar as informações das tabelas A014 -
A001 - A016 - A011 que estão no BD001. Isto que necessito seria em Postgres, um "DBLink", já andei pesquisando.

Se alguém tiver uma sugestão que possa me ajudar mesmo que seja fazer o "DBLink" no Postgress, agradeço desde já.
Pois esta está sendo a "pedra no meu caminho" para terminar o sistema, resolvendo isto vários problemas serão

solucionados de uma vez só. Estamos saindo do Clipper e DBF.

 

Muito obrigado!

Vejam o select que funciona quando o BD é único:

select a017.a017_docu, a017.a017_tipo, A014_DESC, a017.a017_dtem,
a017.a017_tpfo, a017.a017_forn, A001_NOME, a017.a017_hist,
a017.a017_dtvn, a017.a017_vavn, a017.a017_dtpg, a017.a017_vapg,
a017.a017_atra, a017.a017_cdbx, a017.a017_banc, A016_DESC,
a017.a017_cheq, a017.a017_his1, a017.a017_digi, a017.a017_plan, A011_DESC,
a017.a017_dupl, a017.a017_docu as ca017_docu, a017.a017_tipo as ca017_tipo

from a001017_tbl a017

   left outer join a001014_tbl on (a017.a017_tipo = a001014_tbl.a014_chv)
   left outer join a001001_tbl on (a017.a017_tpfo = a001001_tbl.a001_tipo) and  (a017.a017_forn = a001001_tbl.a001_chv)
   left outer join a001016_tbl on (a017.a017_banc = a001016_tbl.a016_chv)
   left outer join a001011_tbl on (a017.a017_plan = a001011_tbl.a011_redu)


O que retornaria mais ou menos conforme abaixo:


---------------------------------------------------------------------------------------------------------------------
A017_DOCU | A017_TIPO | A014_DESC | A017_DTEM | A017_TPFO | A017_FORN | A001_NOME           |   
---------------------------------------------------------------------------------------------------------------------
52.521-U        | 003              | Duplicatas      |16/09/2008      | 001               | 000565          | Santa Maria S/A.        |
----------------------------------------------------------------------------------------------------------------------
36.878-A        | 005              | Cheques         |16/08/2008     | 001               | 000098          | Papelão & Cia.            |
----------------------------------------------------------------------------------------------------------------------
14.315-B        | 001              | Pagamentos     |16/09/2007    | 001               | 000001          | Pagamentos diversos    |
----------------------------------------------------------------------------------------------------------------------

 

Adilson Nunes

 

No virus found in this incoming message.
Checked by AVG - http://www.avg.com
Version: 8.0.169 / Virus Database: 270.7.1/1688 - Release Date: 24/9/2008 06:29


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

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

Re: RES: Ajuda com SQL e BD

by William Leite Araújo-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

    Minha sugestão: crie views relativas a cada banco/tabela. Assim fica fácil executar as junções.

2008/9/24 tetraetila® <tetraetila@...>
Ok! Guilherme, muito obrigado!
 
Mais o problema é integrar o DBLink dentro do meu select, onde ele faz referência a tabela de outro BD seria intercalado o select do DBLink. Fazer
o DBLink sozinho eu sei, como montar o select completo é que não. Tipo:
 
 

    select a017.a017_docu, a017.a017_tipo, ** DBLINK a014_desc **, a017.a017_dtem,

    a017.a017_tpfo, a017.a017_forn, ** DBLINK a001_nome **, a017.a017_hist,

    a017.a017_dtvn, a017.a017_vavn, a017.a017_dtpg, a017.a017_vapg,

    a017.a017_atra, a017.a017_cdbx, a017.a017_banc, ** DBLINK a016_desc **,

    a017.a017_cheq, a017.a017_his1, a017.a017_digi, a017.a017_plan, **DBLINK a011_desc **,

    a017.a017_dupl, a017.a017_docu as ca017_docu, a017.a017_tipo as ca017_tipo

 

    from a001017_tbl a017

 

    left outer join a001014_tbl on (a017.a017_tipo = a001014_tbl.a014_chv)

    left outer join a001001_tbl on (a017.a017_tpfo = a001001_tbl.a001_tipo) and (a017.a017_forn = a001001_tbl.a001_chv)

    left outer join a001016_tbl on (a017.a017_banc = a001016_tbl.a016_chv)

    left outer join a001011_tbl on (a017.a017_plan = a001011_tbl.a011_redu)


 
Adilson Nunes
 
 
----- Original Message -----
Sent: Wednesday, September 24, 2008 9:53 AM
Subject: [pgbr-geral] RES: Ajuda com SQL e BD

Para usar dblink, você precisa ter instaladas as funções.

 

A sintaxe eh

select *

from ('_CONN_BANCO_REMOTO_',  '_SELECT_BANCO_REMOTO')

as t1 (_COL_BANCO_REMOTO_ tipo);

 

Um exemplo

 

select *

from dblink('dbname=teste hostaddr=10.0.0.0 user=postgres password=postgres port=5432',

            'select data

             from dw_data

             where substring(data::varchar, 1, 7) = ''2008-08''  ')

    as t1(data varchar)

 

[],

Guilherme Vianna

 

 

De: pgbr-geral-bounces@... [mailto:pgbr-geral-bounces@...] Em nome de tetraetila®
Enviada em: terça-feira, 23 de setembro de 2008 23:34
Para: pgbr-geral@...
Assunto: [pgbr-geral] Ajuda com SQL e BD

 

Estou precisando de uma ajuda, o Firebird não me serve. Preciso aprender a fazer o DBLink no Postgres

para poder utilizar mais de um BD na minha aplicação. Qualquer ajuda será bem vinda.

Veja a situação abaixo:

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Olá


Estou migrando um sistema para Firebird e me deparei com um problema que gostaria de debater com vocês.
Tenho um BD que possui as tabelas com os dados de clientes, fornecedores, transportadores e vendedores, além
das tabelas de tipos de documentos, plano de contas, bancos, etc. Seria a base principal.

Quando estou na Empresa01 faço um "select" que me retorna o tipo de documento na tabela A017 e a descrição do
documento que está na tabela A014,  o tipo de fornecedor na tabela A017 e o nome do fornecedor  na tabela A001
e por aí vai, vendedores, transportadores, plano de contas, etc. A tabela A017 é de movimentação de contas a pagar, porém no sistema
eu trabalho com as Empresas02, 03, "n"... As tabelas padrões são as mesmas, eu mudo apenas os arquivos de movimentação
para outro BD. O problema é que eu não sei como fazer isto ou se é possível fazê-lo no Firebird.  Ou seja, dar um "select" que
busque dados em dois BD's distintos. Quando o banco de dados é o mesmo o "select" abaixo  funciona perfeitamente,
porém quando mudo para a Empresa02 não funciona, pois não sei buscar as informações das tabelas A014 -
A001 - A016 - A011 que estão no BD001. Isto que necessito seria em Postgres, um "DBLink", já andei pesquisando.

Se alguém tiver uma sugestão que possa me ajudar mesmo que seja fazer o "DBLink" no Postgress, agradeço desde já.
Pois esta está sendo a "pedra no meu caminho" para terminar o sistema, resolvendo isto vários problemas serão

solucionados de uma vez só. Estamos saindo do Clipper e DBF.

 

Muito obrigado!

Vejam o select que funciona quando o BD é único:

select a017.a017_docu, a017.a017_tipo, A014_DESC, a017.a017_dtem,
a017.a017_tpfo, a017.a017_forn, A001_NOME, a017.a017_hist,
a017.a017_dtvn, a017.a017_vavn, a017.a017_dtpg, a017.a017_vapg,
a017.a017_atra, a017.a017_cdbx, a017.a017_banc, A016_DESC,
a017.a017_cheq, a017.a017_his1, a017.a017_digi, a017.a017_plan, A011_DESC,
a017.a017_dupl, a017.a017_docu as ca017_docu, a017.a017_tipo as ca017_tipo

from a001017_tbl a017

   left outer join a001014_tbl on (a017.a017_tipo = a001014_tbl.a014_chv)
   left outer join a001001_tbl on (a017.a017_tpfo = a001001_tbl.a001_tipo) and  (a017.a017_forn = a001001_tbl.a001_chv)
   left outer join a001016_tbl on (a017.a017_banc = a001016_tbl.a016_chv)
   left outer join a001011_tbl on (a017.a017_plan = a001011_tbl.a011_redu)


O que retornaria mais ou menos conforme abaixo:


---------------------------------------------------------------------------------------------------------------------
A017_DOCU | A017_TIPO | A014_DESC | A017_DTEM | A017_TPFO | A017_FORN | A001_NOME           |   
---------------------------------------------------------------------------------------------------------------------
52.521-U        | 003              | Duplicatas      |16/09/2008      | 001               | 000565          | Santa Maria S/A.        |
----------------------------------------------------------------------------------------------------------------------
36.878-A        | 005              | Cheques         |16/08/2008     | 001               | 000098          | Papelão & Cia.            |
----------------------------------------------------------------------------------------------------------------------
14.315-B        | 001              | Pagamentos     |16/09/2007    | 001               | 000001          | Pagamentos diversos    |
----------------------------------------------------------------------------------------------------------------------

 

Adilson Nunes

 

No virus found in this incoming message.


Checked by AVG - http://www.avg.com
Version: 8.0.169 / Virus Database: 270.7.1/1688 - Release Date: 24/9/2008 06:29


_______________________________________________
pgbr-geral mailing list

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




--
William Leite Araújo
Analista de Banco de Dados - QualiConsult

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

RES: RES: Ajuda com SQL e BD

by Guilherme Vianna de Aguiar :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.

Adilson,

é simples também fazer join usando dblink.

 

Abaixo um exemplo:

 

select dw.nome_cfs, f.cfs, count(f.cfs) as tot

from fat20080923 f, (select * from dblink('dbname=dw_download_teste hostaddr=10.0.0.0 user=postgres password=postgres port=5432',

                      'select cfs, nome

                       from dw_cfs') as (cfs varchar, nome_cfs varchar) ) as dw

where f.csp = 'ACO13' and f.scv = '005' and f.siv = '00001' and f.eiv = '00001'

      and f.cfs = dw.cfs

group by  dw.nome_cfs, f.cfs

order by  dw.nome_cfs, f.cfs;

 

Você dá um alias/apelido a tabela local (aqui f) e ao join (aqui dw). Depois pode seguir normalmente, com os joins. No dblink, você precisa especificar a saída da query com o tipo (cada coluna do select).

 

[],

Guilherme

 

 

Guilherme Vianna de Aguiar
_________________________________________
Acotel do Brasil
Praia de Botafogo, 440, 20º Andar - Botafogo

Rio de Janeiro - Rio de Janeiro - Brasil
Phone  (    (+55) 21 3523-6531
Mobile H   (+55) 21 8157-9218
Fax      4    (+55) 21 3523-6565
E-mail -   guilherme.vianna@...

 

 

De: pgbr-geral-bounces@... [mailto:pgbr-geral-bounces@...] Em nome de tetraetila®
Enviada em: quarta-feira, 24 de setembro de 2008 21:23
Para: Comunidade PostgreSQL Brasileira
Assunto: Re: [pgbr-geral] RES: Ajuda com SQL e BD

 

Ok! Guilherme, muito obrigado!

 

Mais o problema é integrar o DBLink dentro do meu select, onde ele faz referência a tabela de outro BD seria intercalado o select do DBLink. Fazer

o DBLink sozinho eu sei, como montar o select completo é que não. Tipo:

 

 

    select a017.a017_docu, a017.a017_tipo, ** DBLINK a014_desc **, a017.a017_dtem,

    a017.a017_tpfo, a017.a017_forn, ** DBLINK a001_nome **, a017.a017_hist,

    a017.a017_dtvn, a017.a017_vavn, a017.a017_dtpg, a017.a017_vapg,

    a017.a017_atra, a017.a017_cdbx, a017.a017_banc, ** DBLINK a016_desc **,

    a017.a017_cheq, a017.a017_his1, a017.a017_digi, a017.a017_plan, **DBLINK a011_desc **,

    a017.a017_dupl, a017.a017_docu as ca017_docu, a017.a017_tipo as ca017_tipo

 

    from a001017_tbl a017

 

    left outer join a001014_tbl on (a017.a017_tipo = a001014_tbl.a014_chv)

    left outer join a001001_tbl on (a017.a017_tpfo = a001001_tbl.a001_tipo) and (a017.a017_forn = a001001_tbl.a001_chv)

    left outer join a001016_tbl on (a017.a017_banc = a001016_tbl.a016_chv)

    left outer join a001011_tbl on (a017.a017_plan = a001011_tbl.a011_redu)

 

 

Adilson Nunes

 

 

----- Original Message -----

Sent: Wednesday, September 24, 2008 9:53 AM

Subject: [pgbr-geral] RES: Ajuda com SQL e BD

 

Para usar dblink, você precisa ter instaladas as funções.

 

A sintaxe eh

select *

from (‘_CONN_BANCO_REMOTO_’,  ‘_SELECT_BANCO_REMOTO’)

as t1 (_COL_BANCO_REMOTO_ tipo);

 

Um exemplo

 

select *

from dblink('dbname=teste hostaddr=10.0.0.0 user=postgres password=postgres port=5432',

            'select data

             from dw_data

             where substring(data::varchar, 1, 7) = ''2008-08''  ')

    as t1(data varchar)

 

[],

Guilherme Vianna

 

 

De: pgbr-geral-bounces@... [mailto:pgbr-geral-bounces@...] Em nome de tetraetila®
Enviada em: terça-feira, 23 de setembro de 2008 23:34
Para: pgbr-geral@...
Assunto: [pgbr-geral] Ajuda com SQL e BD

 

Estou precisando de uma ajuda, o Firebird não me serve. Preciso aprender a fazer o DBLink no Postgres

para poder utilizar mais de um BD na minha aplicação. Qualquer ajuda será bem vinda.

Veja a situação abaixo:

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Olá


Estou migrando um sistema para Firebird e me deparei com um problema que gostaria de debater com vocês.
Tenho um BD que possui as tabelas com os dados de clientes, fornecedores, transportadores e vendedores, além
das tabelas de tipos de documentos, plano de contas, bancos, etc. Seria a base principal.

Quando estou na Empresa01 faço um "select" que me retorna o tipo de documento na tabela A017 e a descrição do
documento que está na tabela A014,  o tipo de fornecedor na tabela A017 e o nome do fornecedor  na tabela A001
e por aí vai, vendedores, transportadores, plano de contas, etc. A tabela A017 é de movimentação de contas a pagar, porém no sistema
eu trabalho com as Empresas02, 03, "n"... As tabelas padrões são as mesmas, eu mudo apenas os arquivos de movimentação
para outro BD. O problema é que eu não sei como fazer isto ou se é possível fazê-lo no Firebird.  Ou seja, dar um "select" que
busque dados em dois BD's distintos. Quando o banco de dados é o mesmo o "select" abaixo  funciona perfeitamente,
porém quando mudo para a Empresa02 não funciona, pois não sei buscar as informações das tabelas A014 -
A001 - A016 - A011 que estão no BD001. Isto que necessito seria em Postgres, um "DBLink", já andei pesquisando.

Se alguém tiver uma sugestão que possa me ajudar mesmo que seja fazer o "DBLink" no Postgress, agradeço desde já.
Pois esta está sendo a "pedra no meu caminho" para terminar o sistema, resolvendo isto vários problemas serão

solucionados de uma vez só. Estamos saindo do Clipper e DBF.

 

Muito obrigado!

Vejam o select que funciona quando o BD é único:

select a017.a017_docu, a017.a017_tipo, A014_DESC, a017.a017_dtem,
a017.a017_tpfo, a017.a017_forn, A001_NOME, a017.a017_hist,
a017.a017_dtvn, a017.a017_vavn, a017.a017_dtpg, a017.a017_vapg,
a017.a017_atra, a017.a017_cdbx, a017.a017_banc, A016_DESC,
a017.a017_cheq, a017.a017_his1, a017.a017_digi, a017.a017_plan, A011_DESC,
a017.a017_dupl, a017.a017_docu as ca017_docu, a017.a017_tipo as ca017_tipo

from a001017_tbl a017

   left outer join a001014_tbl on (a017.a017_tipo = a001014_tbl.a014_chv)
   left outer join a001001_tbl on (a017.a017_tpfo = a001001_tbl.a001_tipo) and  (a017.a017_forn = a001001_tbl.a001_chv)
   left outer join a001016_tbl on (a017.a017_banc = a001016_tbl.a016_chv)
   left outer join a001011_tbl on (a017.a017_plan = a001011_tbl.a011_redu)


O que retornaria mais ou menos conforme abaixo:


---------------------------------------------------------------------------------------------------------------------
A017_DOCU | A017_TIPO | A014_DESC | A017_DTEM | A017_TPFO | A017_FORN | A001_NOME           |   
---------------------------------------------------------------------------------------------------------------------
52.521-U        | 003              | Duplicatas      |16/09/2008      | 001               | 000565          | Santa Maria S/A.        |
----------------------------------------------------------------------------------------------------------------------
36.878-A        | 005              | Cheques         |16/08/2008     | 001               | 000098          | Papelão & Cia.            |
----------------------------------------------------------------------------------------------------------------------
14.315-B        | 001              | Pagamentos     |16/09/2007    | 001               | 000001          | Pagamentos diversos    |
----------------------------------------------------------------------------------------------------------------------

 

Adilson Nunes

 

No virus found in this incoming message.
Checked by AVG - http://www.avg.com
Version: 8.0.169 / Virus Database: 270.7.1/1688 - Release Date: 24/9/2008 06:29


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

No virus found in this incoming message.
Checked by AVG - http://www.avg.com
Version: 8.0.169 / Virus Database: 270.7.2/1690 - Release Date: 25/9/2008 07:05


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

Ajuda com Select

by