Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
grsoft Aprendiz

Registrado: Segunda-Feira, 10 de Abril de 2006 Mensagens: 107
|
Enviada: Qui Set 22, 2016 6:46 am Assunto: Dúvida SQL pagamentos |
|
|
Opa pessoal, seguinte:
Eu tenho um software de gerenciamento de alugueis feito em delphi e estou me enrolando numa SQL.
Eu tenho o seguinte cenário (resumido):
TABELA CLIENTES
COD
NOME
TABELA PROGRAMAS
COD
CODCLI
TABELA PAGAMENTOS
COD
CODPROG
DATAVENCIMENTO
DATAPAGAMENTO
Cada cliente pode ter vários programas e os programas tem vários pagamentos.
O que eu preciso é de um relatório onde eu possa saber quais os clientes, e seus respectivos programas, que fizeram o pagamento no mês passado (essa mês pode ser variável ou até escolher, tipo, nos 2, 3, 4 últimos meses) e não fizeram esse mês.
Se alguém puder me ajudar eu agradeço. |
|
Voltar ao Topo |
|
 |
3Soft-Oto Novato

Registrado: Quarta-Feira, 14 de Setembro de 2016 Mensagens: 10
|
Enviada: Sex Set 23, 2016 11:06 am Assunto: |
|
|
Pelo que eu entendi, tente algo do tipo:
Código: |
SELECT C.COD, C.NOME, P.COD
FROM PAGAMANTOS AS PG
INNER JOIN PROGRAMAS ON PG.CODPROG = P.COD
INNER JOIN CLIENTES ON P.CODCLI = C.COD
WHERE PG.DATAPAGAMENTO >= 'dd/MM/yyyy' AND PG.DATAPAGAMENTO <= 'dd/MM/yyyy'
|
_________________ _____________________
XXXXXXXXXXXXXXXXXX |
|
Voltar ao Topo |
|
 |
grsoft Aprendiz

Registrado: Segunda-Feira, 10 de Abril de 2006 Mensagens: 107
|
Enviada: Sex Set 23, 2016 12:07 pm Assunto: |
|
|
3Soft-Oto escreveu: | Pelo que eu entendi, tente algo do tipo:
Código: |
SELECT C.COD, C.NOME, P.COD
FROM PAGAMANTOS AS PG
INNER JOIN PROGRAMAS ON PG.CODPROG = P.COD
INNER JOIN CLIENTES ON P.CODCLI = C.COD
WHERE PG.DATAPAGAMENTO >= 'dd/MM/yyyy' AND PG.DATAPAGAMENTO <= 'dd/MM/yyyy'
|
|
Dessa forma eu teria os pagamentos realizados num determinado período e não é bem isso q quero. Eu quero saber quais clientes pagaram no mês passado ou nos últimos 2 meses, ou nos últimos 3 meses e não pagaram esse mês. |
|
Voltar ao Topo |
|
 |
syler Profissional

Registrado: Segunda-Feira, 25 de Fevereiro de 2008 Mensagens: 734 Localização: Apucarana - Norte do Paraná
|
Enviada: Sáb Set 24, 2016 2:07 pm Assunto: |
|
|
Tente isso:
Código: |
SELECT C.COD
, C.NOME
, P.COD
, P.DATAVENCIMENTO
, P.DATAPAGAMENTO
FROM PAGAMANTOS AS PG
LEFT JOIN PROGRAMAS ON PG.CODPROG = P.COD
LEFT JOIN CLIENTES ON P.CODCLI = C.COD
WHERE PG.DATAPAGAMENTO BETWEEN :INI AND:FIM
ORDER BY C.NOME
, P.DATAVENCIMENTO
|
Daí você passa o parâmetro do período que precisa. _________________ Alex Sandro de Oliveira
Analista Programador Delphi
Freelancer
Estudante de Desenvolvimento Web, Marketing Digital e Designer Gráfico na Udemy |
|
Voltar ao Topo |
|
 |
grsoft Aprendiz

Registrado: Segunda-Feira, 10 de Abril de 2006 Mensagens: 107
|
Enviada: Seg Set 26, 2016 7:51 am Assunto: |
|
|
Dessa forma eu teria os pagamentos realizados num determinado período e não é bem isso q quero. Eu quero saber quais clientes pagaram no mês passado ou nos últimos 2 meses, ou nos últimos 3 meses e não pagaram esse mês.
syler escreveu: | Tente isso:
Código: |
SELECT C.COD
, C.NOME
, P.COD
, P.DATAVENCIMENTO
, P.DATAPAGAMENTO
FROM PAGAMANTOS AS PG
LEFT JOIN PROGRAMAS ON PG.CODPROG = P.COD
LEFT JOIN CLIENTES ON P.CODCLI = C.COD
WHERE PG.DATAPAGAMENTO BETWEEN :INI AND:FIM
ORDER BY C.NOME
, P.DATAVENCIMENTO
|
Daí você passa o parâmetro do período que precisa. |
|
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Set 26, 2016 10:32 am Assunto: |
|
|
Bom dia,
Experimente mais ou menos dessa forma:
Código: | select *
from Pagamentos s pag
inner join Programas as pgm
on pgm.Cod = pag.CodProg
inner join Clientes as cli
on cli.cod = pgm.CodCli
where
pag.DataPagamento is null and
pag.DataVencimento between :DataAtualIni and :DataAtualFim and
exists(select 1
from Pagamentos as s
where
s.CodProg = pag.CodProg and
s.DataPagamento is not null and
s.DataVencimento between :DataAntIni and :DataAntFim) |
Espero que ajude
_________________
Assinatura: http://www.imoveisemexposicao.com.br/imobiliarias-em-guarulhos |
|
Voltar ao Topo |
|
 |
|