janandfu 0 Denunciar post Postado Junho 22, 2018 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 Compartilhar este post Link para o post Compartilhar em outros sites
Calvetti 0 Denunciar post Postado Agosto 1, 2018 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