- Este tópico contém 2 respostas, 2 vozes e foi atualizado pela última vez 15 anos, 5 meses atrás por
luan.
-
AutorPosts
-
2 de outubro de 2010 às 12:01 am #96385
luan
ParticipanteBoa 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
2 de outubro de 2010 às 2:00 am #96386burga
ParticipanteLEFT 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 DESCAbraços!
4 de outubro de 2010 às 3:28 pm #96390luan
ParticipanteValeuuuuu mestre Burga, agora já não caio mais nesse erro 🙂 ..
Abraços
-
AutorPosts
- Você deve fazer login para responder a este tópico.