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

      Boa tarde galera, cai em um probleminha que pensei pensei e não consegui resolver de uma maneira eficiente e limpa, desculpem-me se for uma duvida idiota, mas vamos lá.
      Seguinte:
      Tenho uma procedure que retorna um ref_cursor com o seguinte select:

      OPEN P_CURSOR FOR
      SELECT
      I.IDAGENDAMENTO,
      A.IDAGENDADETAIL,
      A.DTAGENDA,
      TO_CHAR(A.DTAGENDA,’DD/MM/YYYY’),
      TO_CHAR(A.HRINICIO,’HH24:MI’),
      TO_CHAR(A.HRFIM,’HH24:MI’),
      B.TEMPOCONSULTA,
      TO_CHAR(A.DTHRMARCACAO,’DD/MM/YYYY HH24:MI’),
      A.FLAG,
      I.STATUS,
      A.PARTICULAR,
      E.VALORPARTICULAR,
      E.PREPARO,
      E.CODIGO,
      E.PROCEDIMENTO,
      H.NOME,
      G.ESPECIALIDADE,
      D.MODULO,
      D.ENDERECO || ‘, ‘ || D.COMPLEMENTO || ‘, ‘ || D.BAIRRO || ‘ – ‘ || D.CIDADE,
      J.DESCRICAO,
      ( CASE WHEN F.TABELA = ‘MEDICO_DADO’ THEN
      ( SELECT NOME
      FROM MEDICO_DADO
      WHERE IDMEDICO = F.IDFOREIGN )
      ELSE
      ( SELECT NOME
      FROM COLABORADOR_DADO
      WHERE ID = F.IDFOREIGN )
      END) AS NOME_LOG,
      I.IDBENEFICIARIO
      FROM AGENDA_DETAIL A
      JOIN AGENDA_DADO B ON ( A.IDAGENDADADO = B.IDAGENDADADO )
      JOIN AGENDA_SALA C ON ( B.IDSALA = C.IDSALA )
      JOIN PRESTADOR_DETAIL D ON ( C.IDPRESTADORDETAIL = D.IDDETAIL )
      JOIN TUSS_ANS E ON ( B.IDTUSS = E.ID )
      JOIN LOGIN F ON ( F.ID = A.IDLOGINLOG )
      JOIN MEDICO_ESPECIALIDADE G ON ( G.IDESPECIALIDADE = B.IDMEDICOESPECIALIDADE )
      JOIN MEDICO_DADO H ON ( G.IDMEDICO = H.IDMEDICO )
      JOIN AGENDA_AGENDAMENTO I ON ( I.IDAGENDADETAIL = A.IDAGENDADETAIL )
      JOIN AGENDA_RESTRICAO_UNIDADE J ON ( B.IDTUSS = J.IDTUSS )
      WHERE I.IDBENEFICIARIO = P_IDBENEFICIARIO AND J.IDPRESTADORDETAIL = C.IDPRESTADORDETAIL
      ORDER BY A.DTAGENDA DESC, A.HRINICIO DESC;

      Tenho um problema nesse join do select:
      JOIN AGENDA_RESTRICAO_UNIDADE J ON ( B.IDTUSS = J.IDTUSS )

      o problema é que tem registros que existem restricoes, e tem registros que não existem restrições, então como está sendo feito esse join a query apenas está me retornando os registro que tem restrições.
      Como eu poderia fazer para ele retornar os dois tipos de registros?

      Lembrando que eu não tenho como saber se existe ou não restrição para determinado procedimento a nao ser que fizesse outro select na AGENDA_RESTRICAO_UNIDADE. Eu queria achar uma maneira de resolver tudo apenas em um unico select.

      Agradeço muito a ajuda.

      Abs []’s

      #96386
      burga
      Participante

        LEFT OUTER JOIN AGENDA_RESTRICAO_UNIDADE J ON ( B.IDTUSS = J.IDTUSS AND J.IDPRESTADORDETAIL = C.IDPRESTADORDETAIL)
        WHERE I.IDBENEFICIARIO = P_IDBENEFICIARIO
        ORDER BY A.DTAGENDA DESC, A.HRINICIO DESC

        Abraços!

        #96390
        luan
        Participante

          Valeuuuuu mestre Burga, agora já não caio mais nesse erro 🙂 ..

          Abraços

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