Fórum Select From OpenQuery Com INNER JOIN #618797

09/10/2022

0

Olá,
estou tentando criar uma view onde eu agrego colunas específicas e filtrada.
Consigo fazer do meu localhost, mas estou tentando adicionar os mesmos dados de outra instância de outra maquina na rede.

Este é o meu código:
select MODELO.DESCRICAO, (MODELO.ITEM), MODELO.DTHORA
FROM MODELO 
INNER JOIN TESTE ON MODELO.ID = TESTE.ID 
INNER JOIN ESCOLA ON MODELO.IDESCOLA = ESCOLA.IDESCOLA
where TESTE.IDMODELO = ''''65'''' 
and (ESCOLA.IDGRUPO= ''''99'''')
Union All

SELECT DESCRICAO, ITEM, DTHORA 
FROM OPENQUERY ("CX3-PC\SQLDEV", ''''SELECT * FROM ERPSystem.dbo.MODELO'''')
INNER JOIN TESTE ON MODELO.ID = TESTE.ID
INNER JOIN ESCOLA ON MODELO.IDESCOLA = ESCOLA.IDESCOLA
where TESTE.IDMODELO = ''''65'''' 
and (ESCOLA.IDGRUPO= ''''99'''')
Alan Oliveira

Alan Oliveira

Responder

Posts

26/12/2022

Arthur Heinrich

Você não atribuiu um alias para a tabela acessada pelo OPENQUERY(). Portanto, ao efetuar o join, o banco não sabe qual é a tabela MODELO.

Alterar a linha:

FROM OPENQUERY ("CX3-PC\\SQLDEV", ''''SELECT * FROM ERPSystem.dbo.MODELO'''')

Para:

FROM OPENQUERY ("CX3-PC\\SQLDEV", ''''SELECT * FROM ERPSystem.dbo.MODELO'''') MODELO

Isto provavelmente resolve o problema de sintaxe, mas não resolve outros problemas como o de performance.

Sua query sempre retorna toda a tabela MODELO pela rede. Para minimizar o tráfego de dados, limite a sua consulta às colunas necessárias:

FROM OPENQUERY ("CX3-PC\\SQLDEV", ''''SELECT ID, IDESCOLA, ... FROM ERPSystem.dbo.MODELO'''') MODELO

Não parece algo que deva ser executado frequentemente. Do contrário, é melhor repensar.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar