Dúvida SQL pagamentos

Delphi

22/09/2016

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.
Gustavo Rafael

Gustavo Rafael

Curtidas 0

Melhor post

Jones Granatyr

Jones Granatyr

22/09/2016

Olá Gustavo,

Tente o seguinte SQL:

select cln.nome from clientes cln inner join programas pr on pr.codcli = cln.cod inner join pagamentos pag on pag.codprog = pr.cod where (aqui faz os filtros)

Basicamente essa consulta une as três tabelas para ter acesso a todos os campos.

Jones
GOSTEI 3

Mais Respostas

Gustavo Rafael

Gustavo Rafael

22/09/2016

Eu sei unir as 3 tabelas, o grande problema é o resto...
GOSTEI 0
Carlos Faria

Carlos Faria

22/09/2016

Olá amigo
Na minha opinião falta um campo um flag na sua tabela pagamentos fl_pagamentos int default 0 ou seja se é zero ele não fez pagamentos, se fez vc da um update e altera para 1 isso já resumi e muito o que vc quer quanto ao perido se foi o que entendei basta usar a classe dateutils do delphi um ou dois componentes tdatetimepick e ja era
GOSTEI 0
Carlos Faria

Carlos Faria

22/09/2016

Olá amigo
Na minha opinião falta um campo um flag na sua tabela pagamentos fl_pagamentos int default 0 ou seja se é zero ele não fez pagamentos, se fez vc da um update e altera para 1 isso já resumi e muito o que vc quer quanto ao perido se foi o que entendei basta usar a classe dateutils do delphi um ou dois componentes tdatetimepick e ja era
GOSTEI 0
Gustavo Rafael

Gustavo Rafael

22/09/2016

a flag é se a data de pagamento estiver preenchida.
GOSTEI 0
Carlos Faria

Carlos Faria

22/09/2016

Eu costumo usar a data default exemplo se for sqlserver Dt_pagamento smalldatetime default getdate () ; o que vc vai setar na verdade é o flag de 0 sem pagamentos se o cliente pagou set ele para 1 e o sistema automaticamente coloca a data. Eu costumo trabalhar com campos data dessa maneira o servidor define a data, não é legal enviar data de pcs diferentes. Tendo esses dados basta aplicar os filtros que voce quer na sua query
GOSTEI 0
Gustavo Rafael

Gustavo Rafael

22/09/2016

meu problema é exatamente os filtros. Eu preciso de um exemplo de uma sql pronta e isso até agora ninguém fez.
GOSTEI 0
POSTAR