Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

janandfu

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

Recommended Posts

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

 

 

 

 

 

 

 

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

SELECT 1 (IMAGEM 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 (IMAGEM 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

 

 

2.jpg

1.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Janaína,

 

Use LEFT OUTER JOIN para fazer a junção das tabelas trazendo resultados que existem na tabela da esquerda e que não existem na da direita.

 

Veja:

 

Select <tabA.colunas_desejadas_tabela_A, tabB.colunas_desejadas_tabela_B>

from tabelaA tabA

  left outer join tabelaB tabB

    on tabA.Sequencia = tabB.Sequencia

where <coloque_qualquer_condição_se_necessário>

 

Abs.,

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.