Jump to content
Spurio

[Resolvido] Relacionar 2 tabelas de bancos diferentes

Recommended Posts

Bom dia pessoal é possível relacionar duas tabelas de bancos diferentes??

 

Por exemplo em um banco(A) tenho uma tabela Cliente (intCodCliente, vchNomeCliente)

 

e em outro banco( B_ ) tenho uma tabela Compras (intCodCompra, intCodCliente, vchProduto)

 

É possível relacionar as duas tabelas??

 

Precisava fazer uma relatório então só precisava fazer um select!!

 

É possivel isso?? Alguém pode me ajudaa?? Abraço a todos que colaborarem!!

Share this post


Link to post
Share on other sites

basta informar o nome do banco, schema e tabela, ex.:

 

select * from bancoA.dbo.Cliente Cl
inner join bancoB.dbo.Compras Co on Co.intCodCliente = Cl.intCodCliente
where intCodCliente = 1

Share this post


Link to post
Share on other sites

Valeu deu certo o que eu precisava aki!!

 

Só tirando uma duvida, tem como fazer isso também quando meus bancos de dados estão em maquinas diferentes??

 

Exemplo SERVIDOR A Banco A

SERVIDOR B Banco B

 

eu testei assim e num deu certo exemplo SERVIDOR_A.BANCO_A.dbo.Cliente

 

é possível fazer algo do gênero??

 

Valeu pela ajuda.. se souber se existe e quiser compartilhar mais essa informação ficarei muito grato! Abraços

Share this post


Link to post
Share on other sites

sim é possível, coloque o servidor/instância entre [ ]

select * from [SERVIDOR_A].bancoA.dbo.Cliente Cl
inner join bancoB.dbo.Compras Co on Co.intCodCliente = Cl.intCodCliente
where intCodCliente = 1

 

mas antes terá que adicionar o servidor/instância como linked server, para isso utilize a interface gráfica, no SSMS fica em Server Objects/Linked Servers ou a procedure de sistema sp_addlinkedserver

Share this post


Link to post
Share on other sites

Olá, o select funcionou perfeitamente. Mas como faço para referenciar os dois bancos no mysqli_query.

 

Fiz desse jeito mysqli_query($banco1, $banco2, $sql);

 

mas não deu certo.

 

Alguém pode me ajudar?

Share this post


Link to post
Share on other sites

Olá, o select funcionou perfeitamente. Mas como faço para referenciar os dois bancos no mysqli_query.

Fiz desse jeito mysqli_query($banco1, $banco2, $sql);

mas não deu certo.

Alguém pode me ajudar?

dependendo oque você estiver querendo fazer não precisa declarar os dois bancos para acessa-los

caso o usuário de um dos bancos tenha permissão para acessar o outro você pode fazer algo do tipo:

$query = mysqli_query($banco1,'SELECT * FROM `banco1`.`tabela1` tab1,`banco2`.`tabela2` tab2 WHERE `tab1`.`tab1_id` = `tab2`.`tab2_id`');

é claro que isso é so um exemplo.

poste um exemplo do que pretende fazer, talvez fique melhor para ajudar.

Share this post


Link to post
Share on other sites

Seria possível fazer uma SELECT em banco Oracle e usar um banco do Access na cláusula Where?

 

Ou seja, estou fazendo uma consulta em uma tabela no banco da Oracle, porém tenho que cruzar o que retorna com os dados que tenho em uma tabela do banco no Access.

 

É possível?

Share this post


Link to post
Share on other sites
Em 22/09/2017 at 10:51, ramostart disse:

Seria possível fazer uma SELECT em banco Oracle e usar um banco do Access na cláusula Where?

 

Ou seja, estou fazendo uma consulta em uma tabela no banco da Oracle, porém tenho que cruzar o que retorna com os dados que tenho em uma tabela do banco no Access.

 

É possível?

 

Sim eh possivel desde que os bancos "se falem", ou seja, por ip, hostname, e por ai vai,,,

Via ODBC:

 

Share this post


Link to post
Share on other sites
Em 25/09/2017 at 12:58, A.Jr disse:

e como fazer isso?

 

Em 25/09/2017 at 12:58, A.Jr disse:

Sim eh possivel desde que os bancos "se falem", ou seja, por ip, hostname, e por ai vai,,,

Via ODBC:

 

Share this post


Link to post
Share on other sites

Cria uma conexao via ODBC para o banco de destino

No SQLServer, crie um linkedserver apontando para este ODBC

 

 

Share this post


Link to post
Share on other sites

Para facilmente excluir todos os dados de todas as tabelas de um banco de dados SQL Server, execute a seguinte query resolve o problema:

-- passo 1 desativa a integridade referencial
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO

EXEC sp_MSForEachTable '
IF OBJECTPROPERTY(object_id(''?''), ''TableHasForeignRef'') = 1
DELETE FROM ?
else
TRUNCATE TABLE ?
'
GO

--passo 2 reativa a integridade refencial
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
GO

 

-- Passso 3 Reinicia o contador de chave primária de todas as tabelas

-- Caso deseje reiniciar o contador


EXEC sp_MSForEachTable '
IF OBJECTPROPERTY(object_id(''?''), ''TableHasIdentity'') = 1
DBCC CHECKIDENT (''?'', RESEED, 0)
'
GO

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.