Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Query impossivel


marloncos

Question

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 to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...