Ir para conteúdo

Arquivado

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

carine.coutto

Mostrar titulos que nao possuem aplicação

Recommended Posts

Boa tarde!

Novamente estou aqui rs precisando da ajuda de vocês.

 

É o seguinte criei uma view para mostrar os titulos de pagamento e a aplicação que o titulo pertence.

Para eu chegar na "aplicação do titulo" eu tenho que buscar através da tabela de "pedido de compra" ate ai blza. Porém me deparei com a seguinte situação : Existe titulos que não sao gerados através de "pedido de compra" entao nao terao a aplicação. Esses titulos sao gerados direto na tabela de "itulos a pagar"

Como faria para que esses titulos também venha atras da view ?

 

SELECT DISTINCT 
       TP.FILIAL,
       TP.FORNEC,
       FO.NOME,
       FS.COD_SEGMER,
       SM.DSC_SEGMENTO,
       TP.TITULO,
       TP.SITUACAO,
       TP.EMISSAO,
       TP.VENCIMENTO,
       TP.VALOR,
       TP.STATUS,
       TP.DESCONTO_VAL,
       TP.CODDOC,
       HP.VALOR_PAG,
       IP.COD_APLICACAO,
       AP.NOME,
       IP.NUMPEDC
    FROM TITULO_PAG TP, -- tabela de titulo
         HISTORICO_PAG HP, 
         FORNEC FO,
         FORNEC_SEGMENTO FS,
         SEGMENTO_MERCADO SM,
         PED_COMPRA IP, -- tabela de pedido de compra
         APLICACAO  AP
WHERE TP.FILIAL = HP.FILIAL (+)
AND   TP.FORNEC = HP.FORNEC (+)
AND   TP.TITULO = HP.TITULO (+)
AND   FO.CODIGO = TP.FORNEC
AND   FO.CODIGO = FS.COD_FORNEC
AND   FS.COD_SEGMER = SM.COD_SEGMENTO
AND   IP.NUMPEDC  = TP.PEDIDO
AND   IP.FILIAL   = TP.FILIAL
AND   AP.CODAPLICA = IP.COD_APLICACAO 
AND   AP.FILIAL    = IP.FILIAL 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu coloquei e fica apresentando o seguinte erro:

ORA-01417: a table may be outer joined to at most one other table

 

eu coloquei o (+) do lado dos campos de Pedido_compra

SELECT DISTINCT 
       TP.FILIAL,
       TP.FORNEC,
       FO.NOME,
       FS.COD_SEGMER,
       SM.DSC_SEGMENTO,
       TP.TITULO,
       TP.SITUACAO,
       TP.EMISSAO,
       TP.VENCIMENTO,
       TP.VALOR,
       TP.STATUS,
       TP.DESCONTO_VAL,
       TP.CODDOC,
       HP.VALOR_PAG,
       IP.COD_APLICACAO,
       AP.NOME,
       IP.NUMPEDC
    FROM TITULO_PAG TP,
         HISTORICO_PAG HP,
         FORNEC FO,
         FORNEC_SEGMENTO FS,
         SEGMENTO_MERCADO SM,
         PED_COMPRA IP,
         APLICACAO  AP
WHERE TP.FILIAL = HP.FILIAL (+)
AND   TP.FORNEC = HP.FORNEC (+)
AND   TP.TITULO = HP.TITULO (+)
AND   FO.CODIGO = TP.FORNEC
AND   FO.CODIGO = FS.COD_FORNEC
AND   FS.COD_SEGMER = SM.COD_SEGMENTO
AND   IP.NUMPEDC (+) = TP.PEDIDO
AND   IP.FILIAL  (+) = TP.FILIAL
AND   AP.CODAPLICA = IP.COD_APLICACAO (+)
AND   AP.FILIAL    = IP.FILIAL 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vero ...

 

Faz um UNION replica e select sem a PED_COMPRA e neste 2º select testa se a PED_COMPRA não existe (NOT EXISTS)

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT DISTINCT
       TP.FILIAL,
       TP.FORNEC,
       FO.NOME,
       FS.COD_SEGMER,
       SM.DSC_SEGMENTO,
       TP.TITULO,
       TP.SITUACAO,
       TP.EMISSAO,
       TP.VENCIMENTO,
       TP.VALOR,
       TP.STATUS,
       TP.DESCONTO_VAL,
       TP.CODDOC,
       HP.VALOR_PAG,
       IP.COD_APLICACAO,
       AP.NOME,
       IP.NUMPEDC
    FROM TITULO_PAG TP,
         HISTORICO_PAG HP,
         FORNEC FO,
         FORNEC_SEGMENTO FS,
         SEGMENTO_MERCADO SM,
         PED_COMPRA IP,
         APLICACAO  AP
WHERE TP.FILIAL = HP.FILIAL (+)
AND   TP.FORNEC = HP.FORNEC (+)
AND   TP.TITULO = HP.TITULO (+)
AND   FO.CODIGO = TP.FORNEC
AND   FO.CODIGO = FS.COD_FORNEC
AND   FS.COD_SEGMER = SM.COD_SEGMENTO
AND   IP.NUMPEDC  = TP.PEDIDO
AND   IP.FILIAL   = TP.FILIAL
AND   AP.CODAPLICA = IP.COD_APLICACAO
AND   AP.FILIAL    = IP.FILIAL

UNION ALL

SELECT DISTINCT
       TP.FILIAL,
       TP.FORNEC,
       FO.NOME,
       FS.COD_SEGMER,
       SM.DSC_SEGMENTO,
       TP.TITULO,
       TP.SITUACAO,
       TP.EMISSAO,
       TP.VENCIMENTO,
       TP.VALOR,
       TP.STATUS,
       TP.DESCONTO_VAL,
       TP.CODDOC,
       HP.VALOR_PAG,
       IP.COD_APLICACAO,
       AP.NOME,
       '' NUMPEDC
    FROM TITULO_PAG TP,
         HISTORICO_PAG HP,
         FORNEC FO,
         FORNEC_SEGMENTO FS,
         SEGMENTO_MERCADO SM
         APLICACAO  AP
WHERE TP.FILIAL = HP.FILIAL (+)
AND   TP.FORNEC = HP.FORNEC (+)
AND   TP.TITULO = HP.TITULO (+)
AND   FO.CODIGO = TP.FORNEC
AND   FO.CODIGO = FS.COD_FORNEC
AND   FS.COD_SEGMER = SM.COD_SEGMENTO
AND   NOT EXISTS (SELECT NULL
                  FROM   ED_COMPRA IP
                  AND    IP.NUMPEDC  = TP.PEDIDO
                  AND    IP.FILIAL   = TP.FILIAL
                  AND    IP.COD_APLICACAO = AP.CODAPLICA   
                  AND    IP.FILIAL  = AP.FILIAL)

TENTA ISTO

 

 

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.