Fórum Dúvida SQL pagamentos #562700

22/09/2016

0

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

Responder

Post mais votado

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

Jones Granatyr

Jones Granatyr
Responder

Gostei + 3

Mais Posts

22/09/2016

Gustavo Rafael

Eu sei unir as 3 tabelas, o grande problema é o resto...
Responder

Gostei + 0

22/09/2016

Carlos Faria

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
Responder

Gostei + 0

22/09/2016

Carlos Faria

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
Responder

Gostei + 0

22/09/2016

Gustavo Rafael

a flag é se a data de pagamento estiver preenchida.
Responder

Gostei + 0

22/09/2016

Carlos Faria

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
Responder

Gostei + 0

23/09/2016

Gustavo Rafael

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

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar