Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Query impossivel


marloncos

Pergunta

Ola pessoal!

Estou a 2 dias tentando fazer uma consulta no banco e acho que sera impossivel.

Tenho 3 tableas sendo:

- TAB1

1233440000

- TAB2

1233440000 | AAACCBB

- TAB3

AAACCBB | 55321

Preciso procurar todos os registros de TAB1 em TAB2, porem, o retorno de TAB2 devera ser o conteudo de TAB3, ficando assim:

1233440000 | 55321

são mais de 300kk de registros para esse tipo de consulta/retorno.

alguém poderia me ajudar em como fazer isso? já estou ficando quase louco fazendo de 1k com funcoes de PROCV do excell :(

Vlw!

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde marloncos,

rs... nada é impossível!! Pode até fazer muita gambiarra, mais impossível nunca... rs

Segue um exemplo ai. Olha se é isso que precisa:

-- criação de temporária
CREATE TABLE #TAB1 (valor BIGINT)
CREATE TABLE #TAB2 (valor BIGINT, cod VARCHAR(7))
CREATE TABLE #TAB3 (valor BIGINT, cod VARCHAR(7))

-- inserção dos dados
insert into #TAB1 values(1233440000)
insert into #TAB2 values(1233440000,'AAACCBB')
insert into #TAB3 values(55321, 'AAACCBB')

-- consulta
SELECT t.valor, t3.valor FROM #TAB1 t, #TAB2 t2, #TAB3 t3 WHERE t.valor=t2.valor AND t2.cod=t3.cod

Link para o comentário
Compartilhar em outros sites

  • 0

Ola fulvio!

obrigado pela atencao, mas não funcionou por que eu coloquei aqui no forum a TAB2 com dados a mais.

o correto e assim:

- TAB1

1233440000

- TAB2

123344 | AAACCBB

- TAB3

55321 | AAACCBB

como eu posso fazer para ele consultar apenas os valores da esquerda (ou excluir os 4 ultimos da direita) na consulta?

Vlw!

Boa tarde marloncos,

rs... nada é impossível!! Pode até fazer muita gambiarra, mais impossível nunca... rs

Segue um exemplo ai. Olha se é isso que precisa:

-- criação de temporária
CREATE TABLE #TAB1 (valor BIGINT)
CREATE TABLE #TAB2 (valor BIGINT, cod VARCHAR(7))
CREATE TABLE #TAB3 (valor BIGINT, cod VARCHAR(7))

-- inserção dos dados
insert into #TAB1 values(1233440000)
insert into #TAB2 values(1233440000,'AAACCBB')
insert into #TAB3 values(55321, 'AAACCBB')

-- consulta
SELECT t.valor, t3.valor FROM #TAB1 t, #TAB2 t2, #TAB3 t3 WHERE t.valor=t2.valor AND t2.cod=t3.cod

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia marloncos,

Ai sim... rs. A quantidade de campos são fixas? Se for, poderá fazer da forma abaixo.

-- criação de temporária
CREATE TABLE #TAB1 (valor BIGINT)
CREATE TABLE #TAB2 (valor BIGINT, cod VARCHAR(7))
CREATE TABLE #TAB3 (valor BIGINT, cod VARCHAR(7))

-- inserção dos dados
insert into #TAB1 values(1233440000)
insert into #TAB2 values(123344,'AAACCBB')
insert into #TAB3 values(55321, 'AAACCBB')

-- consulta
SELECT t.valor, t3.valor FROM #TAB1 t, #TAB2 t2, #TAB3 t3 
WHERE LEFT(t.valor,6)=t2.valor AND t2.cod=t3.cod
Mas se a quantidade de campos for dinâmica e você quiser retirar apenas os 4 ultimos digitos, ai terá que fazer de outra forma:
SELECT substring(cast(valor as VARCHAR), 1, LEN(valor)-4) FROM #TAB1

Link para o comentário
Compartilhar em outros sites

  • 0

Ola fulvio!

MUITO OBRIGADO pela ajuda!

funcionou perfeitamente com o primeiro select (confesso que não tentei ainda o segundo pois são 300kk registros)

mesmo assim, muito obrigado mesmo!

Abs,

Bom dia marloncos,

Ai sim... rs. A quantidade de campos são fixas? Se for, poderá fazer da forma abaixo.

-- criação de temporária
CREATE TABLE #TAB1 (valor BIGINT)
CREATE TABLE #TAB2 (valor BIGINT, cod VARCHAR(7))
CREATE TABLE #TAB3 (valor BIGINT, cod VARCHAR(7))

-- inserção dos dados
insert into #TAB1 values(1233440000)
insert into #TAB2 values(123344,'AAACCBB')
insert into #TAB3 values(55321, 'AAACCBB')

-- consulta
SELECT t.valor, t3.valor FROM #TAB1 t, #TAB2 t2, #TAB3 t3 
WHERE LEFT(t.valor,6)=t2.valor AND t2.cod=t3.cod
Mas se a quantidade de campos for dinâmica e você quiser retirar apenas os 4 ultimos digitos, ai terá que fazer de outra forma:
SELECT substring(cast(valor as VARCHAR), 1, LEN(valor)-4) FROM #TAB1

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...