Pular para o conteúdo
  • Este tópico contém 4 respostas, 5 vozes e foi atualizado pela última vez 17 anos, 1 mês atrás por marcelomirandola.
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #80850
    cprado
    Participante

      Pessoal seguinte qdo rodo o select logo abaixo ele esta me trazendo os dados devidamente relacionados, ou melho dizendo quse todos os tados pois a casos em que os campos OPÇÃO2 e OPÇÃO3 estão nulos e ai ele não consegue fazer a comparação
      “and ProcessoSeletivo.ProcessoSeletivo2008.OpcaoCurso2 = B.Codigo
      and ProcessoSeletivo.ProcessoSeletivo2008.OpcaoCurso3 = C.Codigo”
      e consequente mente não me traz os valores…mas quero que mesmo que os campos OPÇÃO2 e OPÇÃO3 sejam nulos os mesmo sejam apresentados…

      Segue abaixo o select

      SELECT FichaUID,
      CodInscricao,
      NomeCandidato,
      DataNasc,
      RG,
      CPF,
      Sexo,
      TelContato,
      TelCelular,
      Endereco,
      NumeroCasa,
      BlocoApto,
      Bairro,
      CEP,
      Cidade,
      Estado,
      Email,
      OpcaoCurso1,
      a.NomeCurso,
      a.Periodo,
      OpcaoCurso2,
      b.NomeCurso,
      b.Periodo,
      OpcaoCurso3,
      c.NomeCurso,
      c.Periodo,
      Pago, DataCadastro, CodInscricao_OLD, NrNossNr, Sala, Carteira
      FROM ProcessoSeletivo.ProcessoSeletivo2008,
      ProcessoSeletivo.Cursos A,
      ProcessoSeletivo.Cursos b,
      ProcessoSeletivo.Cursos c
      WHERE ProcessoSeletivo.ProcessoSeletivo2008.OpcaoCurso1 = A.Codigo
      and ProcessoSeletivo.ProcessoSeletivo2008.OpcaoCurso2 = B.Codigo
      and ProcessoSeletivo.ProcessoSeletivo2008.OpcaoCurso3 = C.Codigo
      AND ProcessoSeletivo.ProcessoSeletivo2008.Pago = ‘1’
      order by 3

      #80852
      DanielB
      Participante

        B.codigo y C.codigo pueden se nulos tambien?

        #80853
        Ishii
        Participante

          Se entendi direito acho que se vc tentar isso deve resolver:

          and nvl(ProcessoSeletivo.ProcessoSeletivo2008.OpcaoCurso2,B.Codigo) = B.Codigo
          and nvl(ProcessoSeletivo.ProcessoSeletivo2008.OpcaoCurso3, C.Codigo) = C.Codigo

          com isso mesmo que os campos ProcessoSeletivo.ProcessoSeletivo2008.OpcaoCurso2 e 3 estejam nulos a condição será respeitada.

          []s Ishii

          #80868
          LoadingXp
          Participante

            Só para ficar claro o comando NVL substitui o NULL por alguma coisa…
            Dá uma olhada nos comandos NVL e NVL2

            Luciano Alvarenga Maciel Pires
            http://www.fulloracle.blogspot.com
            lucianoalvarenga@gmail.com

            #80912
            marcelomirandola
            Participante

              Caro colega cprado, acho que entendi a sua dúvida, e já passei por isso.
              Quando você restringe um campo na cláusula where de uma tabela e o mesmo é nulo, o resultado não aparece. Este tipo de Join ( o mais comum ) é chamado de Inner Join.
              Agora vamos ao que interessa:
              Quando você quer que o resultado apareça mesmo o valor da restrição sendo nulo, você deve usar o Outer Join (+) da seguinte forma:
              De:
              “and ProcessoSeletivo.ProcessoSeletivo2008.OpcaoCurso2 = B.Codigo
              and ProcessoSeletivo.ProcessoSeletivo2008.OpcaoCurso3 = C.Codigo”

              Para:
              “and ProcessoSeletivo.ProcessoSeletivo2008.OpcaoCurso2 (+) = B.Codigo
              and ProcessoSeletivo.ProcessoSeletivo2008.OpcaoCurso3 (+) = C.Codigo”

              Espero ter ajudado.

              Marcelo Mirandola.

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