marloncos Posted January 12, 2012 Report Share Posted January 12, 2012 Ola pessoal!Estou a 2 dias tentando fazer uma consulta no banco e acho que sera impossivel.Tenho 3 tableas sendo:- TAB11233440000- TAB21233440000 | AAACCBB- TAB3AAACCBB | 55321Preciso procurar todos os registros de TAB1 em TAB2, porem, o retorno de TAB2 devera ser o conteudo de TAB3, ficando assim:1233440000 | 55321sã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! Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted January 12, 2012 Report Share Posted January 12, 2012 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 Quote Link to comment Share on other sites More sharing options...
0 marloncos Posted January 12, 2012 Author Report Share Posted January 12, 2012 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:- TAB11233440000- TAB2123344 | AAACCBB- TAB355321 | AAACCBBcomo 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 Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted January 13, 2012 Report Share Posted January 13, 2012 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 Quote Link to comment Share on other sites More sharing options...
0 marloncos Posted January 16, 2012 Author Report Share Posted January 16, 2012 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 Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted January 16, 2012 Report Share Posted January 16, 2012 rs... de nada. Precisando estamos ai!! :.) Quote Link to comment Share on other sites More sharing options...
Question
marloncos
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
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.