Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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!!

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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?

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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?

Compartilhar este post


Link para o post
Compartilhar em outros 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:

 

Compartilhar este post


Link para o post
Compartilhar em outros 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:

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cria uma conexao via ODBC para o banco de destino

No SQLServer, crie um linkedserver apontando para este ODBC

 

 

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.