Usuário com melhor resposta
Como ou posso relacionar uma tabela com duas outras tabelas?

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 TitulosReceber e TitulosPagar 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 pcON
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.!
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
- Editado Kanaãm Luz Romero Rodrigues segunda-feira, 7 de outubro de 2013 13:45
- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 11 de outubro de 2013 18:10
- Marcado como Resposta Giovani Cr segunda-feira, 14 de outubro de 2013 16:06
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
- Editado Kanaãm Luz Romero Rodrigues segunda-feira, 7 de outubro de 2013 13:45
- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 11 de outubro de 2013 18:10
- Marcado como Resposta Giovani Cr segunda-feira, 14 de outubro de 2013 16:06
-
-