Consulta em tabelas simultâneas

Boa tarde, estou com o seguinte problema,

Necessito gerar uma consulta de n tabelas de forma simultâneas, todas de mesma estrutura de colunas e etc.
O elipse e3 disponibiliza tal recurso ?

Obs: Banco de Dados utilizado SQL Server 2014

Desde já grato pela atenção

Sim, Matheus.

O objeto Consulta permite a edição direta do código SQL. Nesse caso, você pode utilizar o operador UNION.

https://www.w3schools.com/sql/sql_union.asp

Boa tarde, fiz a seguinte consulta, porém ainda encontro erros, se puder dar uma verificada agradeço bastante.

A situação é o seguinte, tenho um sistema que faz consulta de uma coluna de cada tabela, que seria a coluna TEMP, e faz uma consulta de data e hora, uma unica vez. Segue abaixo a consulta para a analise:

SELECT

CamBucho_Temp.E3TimeStamp AS [Data e Hora],
CamConserva10_Temp.Temp, AS [Cam. Cons10]
UNION
CamEstoc_Cong08_Temp.Temp, AS [Cam. Estc. Cong. 08]
UNION
CamEstoc_Cong11_Temp.Temp, AS [Cam. Estc. Cong. 11]
UNION
CamEstoc_Porc12_Temp.Temp, AS [Cam. Estc. Porc. 12]
UNION
CamEstoc_Porc13A_Temp.Temp, AS [Cam. Estc. Porc. 13A]
UNION
CamEstoc_Porc13B_Temp.Temp, AS [Cam. Estc. Porc. 13B]
UNION
CamEstoc_Resf05_Temp.Temp, AS [Cam. Estc. Resf. 05]
UNION
CamMiudos_01_Temp.Temp, AS [Cam. Miudos 01]
UNION
CamMiudos_02_Temp.Temp, AS [Cam. Miudos 02]
UNION
CamQuartos_04_Temp.Temp, AS [Cam. Quartos 04]
UNION
CamQuartos_06_Temp.Temp, AS [Cam. Quartos 06]
UNION
CamQuartos_07_Temp.Temp, AS [Cam. Quartos 07]
UNION
CamResf_01A_Temp.Temp, AS [Cam. Resf.1A]
UNION
CamResf_02A_Temp.Temp, AS [Cam. Resf.2A]
UNION
CamResf_02B_Temp.Temp, AS [Cam. Resf.2B]
UNION
CamResf_02C_Temp.Temp, AS [Cam. Resf.2C]
UNION
CamResf_03A_Temp.Temp, AS [Cam. Resf.3A]
UNION
CamResf_03B_Temp.Temp, AS [Cam. Resf.3B]
UNION
CamResf_03C_Temp.Temp, AS [Cam. Resf.3C]
UNION
CamResf_03D_Temp.Temp, AS [Cam. Resf.3D]
UNION
CamSequestro_DIF_Temp.Temp, AS [Cam. Seqst. DIF]
UNION
ConservaCarnesCubo_Temp.Temp, AS [Cam. Cons. Carne Cubos]
UNION
Corredor_Cam11_Temp.Temp, AS [Corredor Cam. 11]
UNION
CorredorCirc_Produto_Temp.Temp, AS [Corredor Circ. Prod.]
UNION
CorredorCirc_Temp.Temp, AS [Corredor Circulacao]
UNION
Desossa_Temp.Temp, AS [Desossa]
UNION
EmbDesossa_Temp.Temp, AS [Emb. Desossa]
UNION
EmbMiudos_Temp.Temp, AS [Emb. Miudos]
UNION
EmbPorcionados_Temp.Temp, AS [Emb. Porc.]
UNION
Paletizacao_Miudos_Temp.Temp, AS [Palet. Miudos]
UNION
Paletizacao_Porcionados_Temp.Temp, AS [Palet. Porc.]
UNION
Paletizacao_Resf_Temp.Temp, AS [Palet. Resf.]
UNION
Porcionados_Temp.Temp, AS [Porcionados]
UNION
ReprocessoPorcionados_Temp.Temp, AS [Reprocesso Porc.]
UNION
SalaCortes_Temp.Temp, AS [Sala Corte]
UNION
Tendal_CarneOsso_Temp.Temp, AS [Tendal Carne Osso]
UNION
Tendal_Cong_Temp.Temp, AS [Tendal Cong]
UNION
TendalN_Resf_Temp.Temp, AS [Tendal Resf]
UNION
TRV_Temp.Temp, AS [TRV]
UNION
TunelCong_10_Temp.Temp, AS [TunelCong 10]
UNION
TunelCong_20_Temp.Temp, AS [TunelCong 20]
UNION
TunelCong_30_Temp.Temp, AS [TunelCong 30]
UNION
TunelCong_50_Temp.Temp, AS [TunelCong 50]
UNION
TunelCong_60_Temp.Temp AS [TunelCong 60]

FROM

CamResf_03D_Temp,
TunelCong_20_Temp,
Paletizacao_Miudos_Temp,
Paletizacao_Resf_Temp,
CorredorCirc_Temp,
CamConserva10_Temp,
EmbMiudos_Temp,
EmbDesossa_Temp,
CamQuartos_04_Temp,
CamMiudos_02_Temp,
CamMiudos_01_Temp,
CamEstoc_Porc12_Temp,
TunelCong_60_Temp,
TunelCong_10_Temp,
SalaCortes_Temp,
Paletizacao_Porcionados_Temp,
Desossa_Temp,
CamQuartos_06_Temp,
EmbPorcionados_Temp,
CamEstoc_Porc13A_Temp,
CamBucho_Temp,
ReprocessoPorcionados_Temp,
CamResf_03A_Temp,
CamResf_02A_Temp,
CamResf_01A_Temp,
CamQuartos_07_Temp,
CamEstoc_Resf05_Temp,
TunelCong_50_Temp,
Corredor_Cam11_Temp,
ConservaCarnesCubo_Temp,
Tendal_Resf_Temp,
CamResf_03C_Temp,
CamResf_03B_Temp,
CamResf_02C_Temp,
CamResf_02B_Temp,
CamEstoc_Cong11_Temp,
CamEstoc_Cong08_Temp,
TRV_Temp,
Tendal_Cong_Temp,
Tendal_CarneOsso_Temp,
TunelCong_30_Temp,
Porcionados_Temp,
CorredorCirc_Produto_Temp,
CamSequestro_DIF_Temp,
CamEstoc_Porc13B_Temp

ORDER BY CamBucho_Temp.E3TimeStamp ASC

Desde já agradeço pela atenção.

A sintaxe não parece correta, Matheus.

Conforme o link que passei, deve haver um SELECT para cada Tabela, e cada SELECT deve ter o mesmo número de colunas, na mesma ordem.

Bom dia Matheus,

Qual a situação onde você deseja utilizar esta consulta? Você pretende exibí-la de que maneira na sua aplicação?

Unir dados de tantas tabelas diferentes é algo bastante custoso para o banco de dados. Acredito que o melhor seria você criar um outro histórico para esse fim, armazenando numa mesma tabela.

Entretanto, você pode escrever a consulta da seguinte maneira:

SELECT

CamBucho_Temp.E3TimeStamp AS [Data e Hora],
CamConserva10_Temp.Temp AS [Cam. Cons10],
CamEstoc_Cong08_Temp.Temp AS [Cam. Estc. Cong. 08],
CamEstoc_Cong11_Temp.Temp AS [Cam. Estc. Cong. 11],
CamEstoc_Porc12_Temp.Temp AS [Cam. Estc. Porc. 12],
CamEstoc_Porc13A_Temp.Temp AS [Cam. Estc. Porc. 13A],
CamEstoc_Porc13B_Temp.Temp AS [Cam. Estc. Porc. 13B],
CamEstoc_Resf05_Temp.Temp AS [Cam. Estc. Resf. 05],
CamMiudos_01_Temp.Temp AS [Cam. Miudos 01],
CamMiudos_02_Temp.Temp AS [Cam. Miudos 02],
CamQuartos_04_Temp.Temp AS [Cam. Quartos 04],
CamQuartos_06_Temp.Temp AS [Cam. Quartos 06],
CamQuartos_07_Temp.Temp AS [Cam. Quartos 07],
CamResf_01A_Temp.Temp AS [Cam. Resf.1A],
CamResf_02A_Temp.Temp AS [Cam. Resf.2A],
CamResf_02B_Temp.Temp AS [Cam. Resf.2B],
CamResf_02C_Temp.Temp AS [Cam. Resf.2C],
CamResf_03A_Temp.Temp AS [Cam. Resf.3A],
CamResf_03B_Temp.Temp AS [Cam. Resf.3B],
CamResf_03C_Temp.Temp AS [Cam. Resf.3C],
CamResf_03D_Temp.Temp AS [Cam. Resf.3D],
CamSequestro_DIF_Temp.Temp AS [Cam. Seqst. DIF],
ConservaCarnesCubo_Temp.Temp AS [Cam. Cons. Carne Cubos],
Corredor_Cam11_Temp.Temp AS [Corredor Cam. 11],
CorredorCirc_Produto_Temp.Temp AS [Corredor Circ. Prod.],
CorredorCirc_Temp.Temp AS [Corredor Circulacao],
Desossa_Temp.Temp AS [Desossa],
EmbDesossa_Temp.Temp AS [Emb. Desossa],
EmbMiudos_Temp.Temp AS [Emb. Miudos],
EmbPorcionados_Temp.Temp AS [Emb. Porc.],
Paletizacao_Miudos_Temp.Temp AS [Palet. Miudos],
Paletizacao_Porcionados_Temp.Temp AS [Palet. Porc.],
Paletizacao_Resf_Temp.Temp AS [Palet. Resf.],
Porcionados_Temp.Temp AS [Porcionados],
ReprocessoPorcionados_Temp.Temp AS [Reprocesso Porc.],
SalaCortes_Temp.Temp AS [Sala Corte],
Tendal_CarneOsso_Temp.Temp AS [Tendal Carne Osso],
Tendal_Cong_Temp.Temp AS [Tendal Cong],
TendalN_Resf_Temp.Temp AS [Tendal Resf],
TRV_Temp.Temp AS [TRV],
TunelCong_10_Temp.Temp AS [TunelCong 10],
TunelCong_20_Temp.Temp AS [TunelCong 20],
TunelCong_30_Temp.Temp AS [TunelCong 30],
TunelCong_50_Temp.Temp AS [TunelCong 50],
TunelCong_60_Temp.Temp AS [TunelCong 60],

FROM

CamResf_03D_Temp,
TunelCong_20_Temp,
Paletizacao_Miudos_Temp,
Paletizacao_Resf_Temp,
CorredorCirc_Temp,
CamConserva10_Temp,
EmbMiudos_Temp,
EmbDesossa_Temp,
CamQuartos_04_Temp,
CamMiudos_02_Temp,
CamMiudos_01_Temp,
CamEstoc_Porc12_Temp,
TunelCong_60_Temp,
TunelCong_10_Temp,
SalaCortes_Temp,
Paletizacao_Porcionados_Temp,
Desossa_Temp,
CamQuartos_06_Temp,
EmbPorcionados_Temp,
CamEstoc_Porc13A_Temp,
CamBucho_Temp,
ReprocessoPorcionados_Temp,
CamResf_03A_Temp,
CamResf_02A_Temp,
CamResf_01A_Temp,
CamQuartos_07_Temp,
CamEstoc_Resf05_Temp,
TunelCong_50_Temp,
Corredor_Cam11_Temp,
ConservaCarnesCubo_Temp,
Tendal_Resf_Temp,
CamResf_03C_Temp,
CamResf_03B_Temp,
CamResf_02C_Temp,
CamResf_02B_Temp,
CamEstoc_Cong11_Temp,
CamEstoc_Cong08_Temp,
TRV_Temp,
Tendal_Cong_Temp,
Tendal_CarneOsso_Temp,
TunelCong_30_Temp,
Porcionados_Temp,
CorredorCirc_Produto_Temp,
CamSequestro_DIF_Temp,
CamEstoc_Porc13B_Temp

Where CamResf_03D_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
TunelCong_20_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
Paletizacao_Miudos_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
Paletizacao_Resf_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CorredorCirc_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamConserva10_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
EmbMiudos_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
EmbDesossa_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamQuartos_04_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamMiudos_02_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamMiudos_01_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamEstoc_Porc12_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
TunelCong_60_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
TunelCong_10_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
SalaCortes_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
Paletizacao_Porcionados_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
Desossa_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamQuartos_06_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
EmbPorcionados_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamEstoc_Porc13A_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
ReprocessoPorcionados_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamResf_03A_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamResf_02A_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamResf_01A_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamQuartos_07_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamEstoc_Resf05_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
TunelCong_50_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
Corredor_Cam11_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
ConservaCarnesCubo_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
Tendal_Resf_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamResf_03C_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamResf_03B_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamResf_02C_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamResf_02B_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamEstoc_Cong11_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamEstoc_Cong08_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
TRV_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
Tendal_Cong_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
Tendal_CarneOsso_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
TunelCong_30_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
Porcionados_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CorredorCirc_Produto_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamSequestro_DIF_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp AND 
CamEstoc_Porc13B_Temp.E3TimeStamp = CamBucho_Temp.E3TimeStamp

ORDER BY CamBucho_Temp.E3TimeStamp ASC

Desde já agradeço pela atenção.

1 Like

Bom com essa sintaxe da consulta ainda não recebi o resultado esperado, ainda apresenta erro de sintaxe, e referente a possibilidade de criação de dados duplicados, o problema é que nesse caso eu devo criar algum tipo de vinculo entre as tabelas, para que sobreponha os valores uma da outra, para garantir que não exista valores duplicados, para que não ofereça a possibilidade de bug na aplicação.
Porém para realizar tal tipo de vínculo entre as tabelas, confesso que meu conhecimento em SQL Server não é de alto nível, eu teria dificuldades para executar tal função.

Caso conheça alguma maneira mais simples de realizar tal tarefa, eu agradeceria bastante que me compartilhasse.

Desde já grato pela ajuda

Matheus,

Para facilitar o seu trabalho, sugiro testar primeiro com duas tabelas. Quando você tiver sucesso, é só acrescentar as demais.

Olá @Matheus!

Como eu disse no post anterior, esse tipo de tarefa vai demandar um certo processamento do servidor SQL, entretanto há algumas formas de se fazer.

Como os seus dados estão vindo de vários históricos diferentes, provavelmente os dados não são registrados com o E3Timestamp idêntico, podendo haver diferenças nos milésimos de segundo ou até diferenças maiores.

Pensando nisso, podemos pensar em montar uma tabela com uma estrutura +/- assim:

E3timestamp | Descricao | Valor
26/04/2018 10:20 | Descricao1 | 10
26/04/2018 10:20 | Descricao2 | 12
26/04/2018 10:20 | Descricao3 | 13

E depois usar um operador PIVOT para transformar numa tabela assim:

E3timestamp | Descricao1 | Descricao2 | Descricao3
26/04/2018 10:20 | 10 | 12 | 13

Veja um exemplo de como escrever esta consulta:

E o resultado desta consulta:

Note que tivemos algumas linhas com o E3Timestamp repetido e os dados aparentemente separados, isso acontece devido à haver diferenças nos milésimos de segundo registrados no banco.

Tente agora adaptar ao seu caso.

Nivaldo