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.
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
Curtidas 0
Melhor post
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
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
22/09/2016
Eu sei unir as 3 tabelas, o grande problema é o resto...
GOSTEI 0
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
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
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
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
22/09/2016
a flag é se a data de pagamento estiver preenchida.
GOSTEI 0
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
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