TABELAS REPETIDAS NA CONSULTA
Salve Salve, então galera, acho ser uma coisa simples, mas não estou acertando desenrolar.
Eu tenho duas tabelas. VendasCab e Vendasz_Crediario
na VendasCab eu registro os dados do cabeçalho da venda, e na outra tabela eu registro dados de pagamento e recebimento da venda.
na SQL eu queria mencionar as duas tabelas repetindo os campos Vendasz_Crediario.Valor como mostra a imagem abaixo; porém não consigo fazer o JOIN corretamente.
Eu queria algo mais ou menos assim:
SELECT Lancamento.Valor, Baixa.Valor FROM
sendo que eu adiciono a tabela duas vezes na consulta
FROM
Vendasz_Crediario AS Lancamento
Vendasz_Crediario AS Baixa
e o Critério seria
WHERE Isnull(Lancamento.DataPgto) AND ( NOT Isnull(Baixa.DataPgto)
Alguém tem como me dar uma luz de como eu faço esse JOIN funcionar ?
... Segue a estrutura do DB em anexo;
Eu tenho duas tabelas. VendasCab e Vendasz_Crediario
na VendasCab eu registro os dados do cabeçalho da venda, e na outra tabela eu registro dados de pagamento e recebimento da venda.
na SQL eu queria mencionar as duas tabelas repetindo os campos Vendasz_Crediario.Valor como mostra a imagem abaixo; porém não consigo fazer o JOIN corretamente.
Eu queria algo mais ou menos assim:
SELECT Lancamento.Valor, Baixa.Valor FROM
sendo que eu adiciono a tabela duas vezes na consulta
FROM
Vendasz_Crediario AS Lancamento
Vendasz_Crediario AS Baixa
e o Critério seria
WHERE Isnull(Lancamento.DataPgto) AND ( NOT Isnull(Baixa.DataPgto)
Alguém tem como me dar uma luz de como eu faço esse JOIN funcionar ?
... Segue a estrutura do DB em anexo;
Select [ô]baixa[ô], Codigo, Valor From Baixa
[txt-color=#e80000]UNION[/txt-color]
Select [ô]Lancamento[ô], Codigo, Valor from lancamento
Where baixa.campo1 = valor1
and lancamento.campo1 = valor2
O que você quer é um UNION e não um join, conforme exemplo acima. Se precisar fazer um join desse resultado com outra tabela, também é possÃvel.
Não, quero o JOIN mesmo, union vai me trazer duas consultas.
o que eu quero é mostrar o valor pago e o valor baixado numa mesma linha.
o que eu quero é mostrar o valor pago e o valor baixado numa mesma linha.
isso aà que vc mencionou, eu já tenho
Mas não ficou muito prático, porque as vezes tem várias faturas/duplicatas;
exemplo. O devedor deve 800,00 em 20 faturas/duplicatas e está dividido em 10x, porém o cliente irá pagar somente 500,00 e o sistema vai pagando da mais antiga pra mais nova de uma forma mais fácil para o usuário.
Citação:SELECT A.Codigo AS CodCab, A.NumeroCupom, B.Codigo AS CodDet, IIf(IsNull(B.DataPgto),A.DataVenda,B.DataPgto) AS Data, Format(IIf(IsNull(B.DataPgto),A.ValorBruto,B.Valor),[ô]#,##0.00[ô]) AS [Valor ], IIf(IsNull(B.DataPgto),[ô]LANÇAMENTO[ô],[ô]RECEBIMENTO[ô]) AS Movimento
[Ô]FROM Vendasz_Crediario AS B INNER JOIN VendasCab AS A ON B.CodigoCab = A.Codigo
[Ô]WHERE A.Contas_aReceber=True AND A.IDCliente=137
Mas não ficou muito prático, porque as vezes tem várias faturas/duplicatas;
exemplo. O devedor deve 800,00 em 20 faturas/duplicatas e está dividido em 10x, porém o cliente irá pagar somente 500,00 e o sistema vai pagando da mais antiga pra mais nova de uma forma mais fácil para o usuário.
Bom, eu fiz da seguinte forma
Criei duas views, uma para Lançados e outra para Baixados, depois disto fiz o SELECT com o JOIN, por enquanto está resolvendo, porém ainda não acho que seja a maneira correta.
Como são poucos registros 15.000, a resposta ainda está imediata, vamos ver no que dá. vou deixar o tópico em aberto, qualquer ajuda será bem vinda.
Criei duas views, uma para Lançados e outra para Baixados, depois disto fiz o SELECT com o JOIN, por enquanto está resolvendo, porém ainda não acho que seja a maneira correta.
Citação:SELECT Lancado.CodCab, Lancado.NumeroCupom, Lancado.Lançado, Baixado.Baixado, Lancado.IDCliente
FROM ContasReceberAvulso_Lancado AS Lancado LEFT JOIN ContasReceberAvulso_Baixado AS Baixado ON Lancado.CodCab = Baixado.CodCab;
Como são poucos registros 15.000, a resposta ainda está imediata, vamos ver no que dá. vou deixar o tópico em aberto, qualquer ajuda será bem vinda.
Tópico encerrado , respostas não são mais permitidas