Trazer todos os registros contidos na tabela A, independente de ter campo nulo na tabela B

24/06/2018

0

Boa noite pessoal, como vai?

Tenho um script que não estou conseguindo finalizar pois preciso trazer dados de 2 tabelas, porém na segunda tabela não consta todos os registros existentes na primeira tabela. Vou exemplificar:



TABELA A

Sequencia

Exame

1233

Hemograma

1234

Malaria

1235

Toxoplasmose

1236

Ultrasson













TABELA B

Sequencia

Exame

Status Exame

1233

Hemograma

Realizado

1234

Malaria

Realizado









RETORNO ESPERADO

Sequencia

Exame

Status Exame

1233

Hemograma

Realizado

1234

Malaria

Realizado

1235

Toxoplasmose

nulo

1236

Ultrasson

nulo




Olá pessoal, como vai?

Tenho um script que não estou conseguindo finalizar pois preciso trazer dados de 2 tabelas, porém na segunda tabela não consta todos os registros existentes na primeira tabela. Vou exemplificar:


TABELA A

Sequencia Exame
1233 Hemograma
1234 Malaria
1235 Toxoplasmose
1236 Ultrassom


TABELA B

Sequencia Exame Status Exame
1233 Hemograma Realizado
1234 Malaria Realizado

RETORNO ESPERADO
Sequencia Exame Status Exame
1233 Hemograma Realizado
1234 Malaria Realizado
1235 Toxoplasmose Nulo
1236 Ultrassom Nulo

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------SELECT 1- Nesse select é exibido todos os exames contidos na mesma ficha/paciente (6 exames):




SELECT DISTINCT

F.NR_SEQ_EXAME,

SUBSTR(OBTER_DESC_EXAME(F.NR_SEQ_EXAME), 1, 255) DS_EXAME

FROM

LOTE_ENT_SECRETARIA A,
LOTE_ENT_INSTITUICAO B,
LOTE_ENT_SEC_FICHA C,
LOTE_ENT_SEC_FICHA_EXAM D,
PRESCR_MEDICA E,
PRESCR_PROCEDIMENTO F,
EXAME_LAB_RESULTADO G,
EXAME_LAB_RESULT_ITEM H



/* LOTE_ENT_RECONVOCADO I,
LOTE_ENT_RECONVOCADO_ITEM J,
LOTE_ENT_RECONVOCADO_CONT K*/


WHERE A.NR_SEQ_INSTITUICAO = B.NR_SEQUENCIA
AND C.NR_SEQ_LOTE_SEC = A.NR_SEQUENCIA
AND D.NR_SEQ_FICHA = C.NR_SEQUENCIA
AND E.NR_SEQ_FICHA_LOTE = C.NR_SEQUENCIA
AND E.NR_SEQ_LOTE_ENTRADA = A.NR_SEQUENCIA
AND F.NR_PRESCRICAO = E.NR_PRESCRICAO
AND G.NR_PRESCRICAO = E.NR_PRESCRICAO
AND H.NR_SEQ_RESULTADO = G.NR_SEQ_RESULTADO



/*AND I.NR_SEQ_FICHA_LOTE = C.NR_SEQUENCIA
AND I.NR_SEQ_LOTE_SEC = A.NR_SEQUENCIA
AND J.NR_PRESCRICAO = F.NR_PRESCRICAO
AND J.NR_SEQ_PRESCR = F.NR_SEQUENCIA
AND J.NR_SEQ_RECONVOCADO = I.NR_SEQUENCIA
AND K.NR_SEQ_RECONVOCADO = I.NR_SEQUENCIA */


AND E.NR_PRESCRICAO = 202130
AND F.IE_STATUS_ATEND = 35
AND F.IE_SUSPENSO = 'N'


-----------------------------------

SELECT 2 - Nesse select é exibido somente os exames que possuem o campo "J.NR_SEQ_STATUS_RECONV" preenchido, (4 exames), os outros dois exames não são mostrados:

SELECT DISTINCT

F.NR_SEQ_EXAME,
SUBSTR(OBTER_DESC_EXAME(F.NR_SEQ_EXAME), 1, 255) DS_EXAME,
J.NR_SEQ_STATUS_RECONV

FROM

LOTE_ENT_SECRETARIA A,
LOTE_ENT_INSTITUICAO B,
LOTE_ENT_SEC_FICHA C,
LOTE_ENT_SEC_FICHA_EXAM D,
PRESCR_MEDICA E,
PRESCR_PROCEDIMENTO F,
EXAME_LAB_RESULTADO G,
EXAME_LAB_RESULT_ITEM H,

LOTE_ENT_RECONVOCADO I,
LOTE_ENT_RECONVOCADO_ITEM J,
LOTE_ENT_RECONVOCADO_CONT K


WHERE A.NR_SEQ_INSTITUICAO = B.NR_SEQUENCIA
AND C.NR_SEQ_LOTE_SEC = A.NR_SEQUENCIA
AND D.NR_SEQ_FICHA = C.NR_SEQUENCIA
AND E.NR_SEQ_FICHA_LOTE = C.NR_SEQUENCIA
AND E.NR_SEQ_LOTE_ENTRADA = A.NR_SEQUENCIA
AND F.NR_PRESCRICAO = E.NR_PRESCRICAO
AND G.NR_PRESCRICAO = E.NR_PRESCRICAO
AND H.NR_SEQ_RESULTADO = G.NR_SEQ_RESULTADO

AND I.NR_SEQ_FICHA_LOTE = C.NR_SEQUENCIA
AND I.NR_SEQ_LOTE_SEC = A.NR_SEQUENCIA
AND J.NR_PRESCRICAO = F.NR_PRESCRICAO
AND J.NR_SEQ_PRESCR = F.NR_SEQUENCIA
AND J.NR_SEQ_RECONVOCADO = I.NR_SEQUENCIA
AND K.NR_SEQ_RECONVOCADO = I.NR_SEQUENCIA


AND E.NR_PRESCRICAO = 202130
AND F.IE_STATUS_ATEND = 35
AND F.IE_SUSPENSO = 'N'





------------------------------------------------------------------------------

Preciso que o retorno do script traga os 6 exames, independente do campo "J.NR_SEQ_STATUS_RECONV" estar preenchido ou não.

Tentei usar (+), mas acredito que não estou utilizando nos campos / tabelas corretas.



Desde já agradeço a ajuda!



Janaina
Janaina

Janaina

Responder

Post mais votado

24/06/2018

para unir as tabelas nesse caso, use pesquise sobre "left join".
para exibir valores nulos em oracle, use a funcao NVL().
qqer coisa retorne.

Fernando C

Fernando C
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar