Como utilizar o comando LIKE em tabelas e campos diferentes

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Avatar do usuário
vitellozzi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Qua, 15 Set 2010 9:53 am
Localização: Itatiba

Olá Pessoal, Boa Tarde.

Selecionar tudo

SELECT * FROM GI WHERE GI.NRGUIA = '80293713'
Tenho duas tabelas, a tabela GUIA_DE_SERVICO onde tenho uma guia no campo NRGUIA = 1000 e nessa mesma tabela tenho o campo
NRDOCTO_PRESTADOR = '30011 80293713', o problema está na outra tabela GUIA_INTERCAMBIO onde a mesma guia está com o valor NRGUIA = '80293713' como vincular essas duas tabelas usando o comando LIKE, para localizar NRGUIA = '80293713' no NRDOCTO_PRESTADOR = '30011 80293713'.

Desde já agradeço,
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

tem q usar o like no join?? tem mesmo??

talvez se você explicar o problema alguém tenha uma ideia melhor para te ajudar.. mesmo q você resolva seu like a sua query pode vir a demorar muito
Avatar do usuário
vitellozzi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Qua, 15 Set 2010 9:53 am
Localização: Itatiba

Bom ... a idéia e amarrar de alguma forma, tentei com o INNER JOIN e não funcionou ... não sei que comando utilizo para comparar, pensei no LIKE para tentar vincular a tabela GUIA_INTERCAMBIO com o campo GI.NRGUIA = '80293713' onde esse valor eu encontra na tabela GUIA_DE_SERVICO no campo NRDOCTO_PRESTADOR = '30011 80293713'.

Desde já agradeço a ajuda,
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

Selecionar tudo


select substr('30011 80293713', 7) from dual;

--dai você não precisa mais de like

GI.NRGUIA = substr(NRDOCTO_PRESTADOR, 7) 

Avatar do usuário
vitellozzi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Qua, 15 Set 2010 9:53 am
Localização: Itatiba

Falha minha ... não comentei, estava tão preocupado em mencionar a amarração que esqueci de falar que no campo NRDOCTO_PRESTADOR nem sempre vai estar na posição o que não permite utilizar o SUBSTR. Preciso localizar o valor do NRGUIA da tabela GUIA_INTERCAMBIO na tabela GUIA_DE_SERVICO no campo NRDOCTO_PRESTADOR.

A idéia seria : NRDOCTO_PRESTADOR LIKE '%80293713%' ... No qual NRGUIA é 80293713 mas, tal sintaxe não funciona, seria fácil assim:

Selecionar tudo

NRDOCTO_PRESTADOR LIKE '%NRGUIA%'
Desculpa por não informar o SUBSTR. Desde já agradeço.
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

vê se vai..

Selecionar tudo

NRDOCTO_PRESTADOR LIKE '%' || NRGUIA || '%' 
Avatar do usuário
vitellozzi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Qua, 15 Set 2010 9:53 am
Localização: Itatiba

Quero agradecer a ajuda ... Ficou resolvido dessa forma:

Selecionar tudo

SELECT '%'||GI.NRGUIA||'%' FROM GUIA_INTERCAMBIO GI 
WHERE GI.NRGUIA IN (SELECT SUBSTR(GS.NRDOCTO_PRESTADOR, INSTR(GS.NRDOCTO_PRESTADOR,' '), 10) 
FROM GUIA_DE_SERVICO GS WHERE GS.NRGUIA = '74746') -- AND GS.CDSERIE_GUIA = 'U')
Onde ... NRDOCTO_PRESTADOR = 30011 80293713
Utilizando

Selecionar tudo

SUBSTR(GS.NRDOCTO_PRESTADOR, INSTR(GS.NRDOCTO_PRESTADOR,' '), 10)
... é igual = 80293713

Conclusão a idéia de utilizar o LIKE inicialmente não era a melhor solução.

Abraços
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

quebro a string e correu para o abraço..

o like ia onerar muito a sua consulta ne.. foi o que tentei te dizer no meu primeiro post..
o importante e que está resolvido..

abraço e fica na paz
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes