none
Como ou posso relacionar uma tabela com duas outras tabelas? RRS feed

  • Pergunta

  • Bom dia...!

    Tenho o seguinte problema:

    • Tenho a tabela de TitulosReceber, a de NotasFiscais e de TitulosPagar. estou relacionando a contas a Receber e a pagar com a de notas fiscais até ai beleza. A questão é que preciso relacionar também uma outra tabela de ContasContabeis com as tabelas de TitulosReceberTitulosPagar e não estou conseguindo fazer esse relacionamento, segue abaixo a forma de como estou fazendo:
    ====================================================================                      

     select nf.NumNF, 
    ISNULL((CASE WHEN nf.TipoNota = 0 THEN cpc.Ccontabil ELSE cb.Ccontabil END),'Não tem Título') AS "ContaContabil", 
            pc.Descricao AS DescCcontabil, 
            ISNULL((CASE WHEN nf.TipoNota = 0 THEN cpc.Ccusto ELSE cb.ccusto END),'Não tem Título') AS CentroCusto

    From 
    NFiscal nf 
    INNER JOIN 
    Cobranca cb 
    ON nf.Empresa = cb.Empresa AND nf.Filial = cb.Filial AND nf.NumNF = cb.NumNF AND nf.Cgc = cb.Cliente

    LEFT JOIN 
    CpCobranca cpc
    ON nf.Empresa = cpc.Empresa AND nf.Filial = cpc.Filial AND nf.NumNF = cpc.NumNF AND nf.Cgcemissor = cpc.Cliente

    RIGHT JOIN 
    PlanoContas pc

    ON 
    cb.Empresa = pc.Empresa AND cb.Ccontabil = pc.Ccontabil  
    AND
    cpc.Empresa = pc.Empresa AND cpc.Ccontabil = pc.Ccontabil

    ======================================================--ESSE RELACIONAMENTO ACIMA QUE ESTOU FAZENDO NÃO ESTA RETORNANDO OS VALORES, POIS PRECISO RELACIONAR O PLANO DE CONTAS COM AS DUAS TABELAS(Cobranca e CpCobranca).

    Agradeço desde já qualquer ajuda prestada, grato.!

    segunda-feira, 7 de outubro de 2013 13:28

Respostas

  • Acho que isso resolve seu problema:

    select nf.NumNF, 
    ISNULL((CASE WHEN nf.TipoNota = 0 THEN cpc.Ccontabil ELSE cb.Ccontabil END),'Não tem Título') AS "ContaContabil", 
            pc.Descricao AS DescCcontabil, 
            ISNULL((CASE WHEN nf.TipoNota = 0 THEN cpc.Ccusto ELSE cb.ccusto END),'Não tem Título') AS CentroCusto
    
    From 
    NFiscal nf 
    INNER JOIN 
    Cobranca cb 
    ON nf.Empresa = cb.Empresa AND nf.Filial = cb.Filial AND nf.NumNF = cb.NumNF AND nf.Cgc = cb.Cliente
    
    LEFT JOIN 
    CpCobranca cpc
    ON nf.Empresa = cpc.Empresa AND nf.Filial = cpc.Filial AND nf.NumNF = cpc.NumNF AND nf.Cgcemissor = cpc.Cliente
    
    RIGHT JOIN 
    PlanoContas pc
    
    ON 
    pc.Empresa = (CASE WHEN nf.TipoNota = 0 THEN cpc.Empresa ELSE cb.Empresa END) AND pc.Ccontabil = (CASE WHEN nf.TipoNota = 0 THEN cpc.Ccontabil ELSE cb.Ccontabil  END)

    Existem outras formas de fazer, mas acho que assim já ajuda.


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski


    segunda-feira, 7 de outubro de 2013 13:44

Todas as Respostas

  • Acho que isso resolve seu problema:

    select nf.NumNF, 
    ISNULL((CASE WHEN nf.TipoNota = 0 THEN cpc.Ccontabil ELSE cb.Ccontabil END),'Não tem Título') AS "ContaContabil", 
            pc.Descricao AS DescCcontabil, 
            ISNULL((CASE WHEN nf.TipoNota = 0 THEN cpc.Ccusto ELSE cb.ccusto END),'Não tem Título') AS CentroCusto
    
    From 
    NFiscal nf 
    INNER JOIN 
    Cobranca cb 
    ON nf.Empresa = cb.Empresa AND nf.Filial = cb.Filial AND nf.NumNF = cb.NumNF AND nf.Cgc = cb.Cliente
    
    LEFT JOIN 
    CpCobranca cpc
    ON nf.Empresa = cpc.Empresa AND nf.Filial = cpc.Filial AND nf.NumNF = cpc.NumNF AND nf.Cgcemissor = cpc.Cliente
    
    RIGHT JOIN 
    PlanoContas pc
    
    ON 
    pc.Empresa = (CASE WHEN nf.TipoNota = 0 THEN cpc.Empresa ELSE cb.Empresa END) AND pc.Ccontabil = (CASE WHEN nf.TipoNota = 0 THEN cpc.Ccontabil ELSE cb.Ccontabil  END)

    Existem outras formas de fazer, mas acho que assim já ajuda.


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski


    segunda-feira, 7 de outubro de 2013 13:44
  • Kanaãm Luz Romero Rodrigues,

    Boa tarde...!

    • Muito bacana meu brother, valeu mesmo, funcionou corretamente agora.... Muito Obrigado.!
    segunda-feira, 7 de outubro de 2013 17:40
  • Beleza Gil,

    Precisando posta ai que tentamos ajudar.

    Se puder marca a resposta como correta.

    Abraço!


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    segunda-feira, 7 de outubro de 2013 18:23