Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #99593
    halannl
    Participante

      Boa tarde pessoal, hoje tive um problema com uma query que chegou pra mim pronta, mas estava dando erros com tipagem e por isso revirei toda a query, então surgiu uma dúvida.

      em certo ponto eu faço um left join em um campo que precisa de uma conversão de varchar2(3) pra number…

      assim tenho: TO_NUMBER(‘variavel1′(+)) = ‘variavel2’ que roda!
      mas achava que seria: TO_NUMBER(‘variavel1’)(+) = ‘variavel2’ que não roda (missing expression)!

      mas a opção de cima tem o símbolo do join dentro da conversão, o que da uma impressão hierarquica incorreta… apesar de rodar assim.

      mas a minha dúvida é se realmente certo colocar assim ou o oracle pode estar interpretando de forma incorreta? tenho medo de que isto possa causar inconsistência na integridade dos dados.

      Obrigado.

      #99594
      rman
      Participante

        Fiz alguns teste, o resultado de ambas as consultas são iguais…


        SELECT *
        FROM SCOTT.DEPT D,SCOTT.EMP E
        WHERE TO_NUMBER(E.DEPTNO(+)) = TO_NUMBER(D.DEPTNO);

        SELECT *
        FROM SCOTT.DEPT D
        LEFT OUTER JOIN SCOTT.EMP E ON E.DEPTNO = D.DEPTNO;

        Apesar eu não adotar a pratica de utilizar o operador (+) para realização de JOIN, eu estou supondo que a sintaxe deve ser COLUNA(+) e não como se pode pensar (+) = ou = (+), logo se aplica função em cima de COLUNA(+).

        Eu prefiro trabalhar com LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN. Além de ficar mais humanamente legivel, este é o padrão SQL92. Eu uso a clausula WHERE pra fazer condições de filtragem e as ligações entre as tabelas deixo no JOIN.

        #99597
        halannl
        Participante

          Obrigado rman, pesquisando melhor descobri que minha dúvida na verdade foi resolvida por algo que vc mesmo colocou em seu post, o (+) deve ser ao lado da COLUNA em que se quer fazer o join, e não ao lado do LADO do join em que se quer aplicar o join.
          Ou seja, eu pensava que tinha que colocar o (+) ao lado do resultado da expressão que a coluna participava e não da coluna em si.

          Obrigado.

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.