[firebase-br] Ajuda com BD e SQL

tetraetila® tetraetila em netscape.net
Ter Set 23 22:36:55 -03 2008


Olá pessoal!

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
 
A Informática nasceu para resolver
 problemas que antes não existiam...
<http://tetraetila.coolfreepage.com>




Mais detalhes sobre a lista de discussão lista