Sql para saber os associados sem pagamento de anuidade

tenho a tabela associado e a tabela pagamento o usuario vai no meu associado e faz um lancamento de anuidade para ser efetuado o pagamento avista ou a prazo, o lancamento é feito na tabela pagamento gostaria de saber como faco para saber os associados sem pagamento de anuidade

Olá maxwellmargotti1,

Você pode obter os dados através das seguintes opções:

Ou

Creio que com o join conseguirá resolver seu problema.

Espero ter lhe sido útil, abraços.

_ _
Fabiano Abreu
Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL

desculpe mas ainda esta dificil pra mim, na tabela associado tenho codigo e nome do associado, na tabela pagamento tenho codigo da inclusao,valor,parcela,data emissao, data pagamento,ano referente e o nome do associado … na tela pagamento eu crio um lancamento com o valor, a data de emissao, o associado, o numero de parcelas(o valor que é inserido na tabela é o valor digitado dividido pelo numero de parcelas) ai quando ele efetua o pagamento seta um update no data de pagamento, entao quero um relatorio dos associados que nao efetuaram pagamento porem eles nao tem lancamentos na tabela pagamento…

uma solucao que pensei era mostar os associados que nao estao relacionados na tabela pagamento para um ano digitado pelo usuario e outro relatorio com os associados que tenham lancamentos porem nao tenham data de pagamento o que vcs acham??? e qual a maneira de realizar isso??

Amigo maxwellmargotti1,

Pelo que eu li você fez a ligação que você tem entre as tabelas ASSOCIADO e PAGAMENTO é o nome do associado, me corrija se eu estiver enganado, mas se for isso mesmo te aconselho a usar o campo CODIGO da tabela ASSOCIADO como chave estrangeira em PAGAMENTO.

Imaginando que você utilize o código como relacionamento, fiz um pequeno exemplo

SELECT
	associado.codassoc       ,
	associado.nome           ,
	pagamento.codinc         ,
	pagamento.valor          ,
	pagamento.parcela        ,
	pagamento.dtEmissao      ,
	pagamento.anoReferente   
FROM
	associado
// O JOIN irá unir as duas tabelas pelo codassoc de ambas e o AND que utilizei no JOIN mas pode ser no WHERE
// trará apenas os inadimplentes
JOIN pagamento ON pagamento.codassoc = associado.codassoc AND pagamento.dtPagamento is null

o codigo na tabela associado nao tem nenhuma ligação com o campo codigo na tabela pagamento a ligação entre elas eh o nome do associado, não sei como funciona chave estrangeira na tabela pagamento, ira mudar algo na programacao no java??e se puder me explique a utilidade de usar chave estrangeira.

so pra esclarecer eu quero listar os associados cadastrados no sistema que nao estejam na tabela pagamento para um ano digitado pelo usuario e que nao tenha data de pagamento setada, mesmo nao entendendo muito bem vou tentar usar sua opção para ver se eu compreendo

obrigado e espero esclarecimentos

Bom, para esclarecer primeiro o porque eu aconselhei a utilizar um campo CODIGO (ou qualquer outra chave primária da tabela ASSOCIADO) ao invés de um campo NOME.
Imagine se houverem três associados com o nome JOSE DA SILVA, um deles paga todas, outro paga algumas e outro nunca paga nada, como saber quem pagou?
Ao utilizar o campo CODIGO na tabela de pagamento resolveria essa questão (Se o CODIGO for primary key na tabela ASSOCIADO, claro).

Na programação pode mudar sim, depende da forma como estão suas classes e o CRUD que você montou, não sei como você as montou as classes, mas há várias possibilidades:
Classe ASSOCIADO com um atributo List<PAGAMENTO>
Classe ASSOCIADO com um atributo Calendar dataUltimoPagto
Classe PAGAMENTO com um atributo ASSOCIADO
Classe PAGAMENTO com um atributo String nomeAssociado

As chaves estrangeiras ou foreing key criam uma ligação lógica entre as tabelas no seu banco de dados (Oracle, MySql, Sql Server, etc).
Você pode colocar restrições nessas chaves estrangeiras para que, por exemplo, nunca seja excluído um registro de ASSOCIADO se em PAGAMENTO houver algum registro ligado a ele.

Mas de qualquer forma se quiser fazer um JOIN com o campo nome é só alterar o exemplo anterior para

SELECT  
    associado.codigo       ,  
    associado.nome           ,  
    pagamento.codinc         ,  
    pagamento.valor          ,  
    pagamento.parcela        ,  
    pagamento.dtEmissao      ,  
    pagamento.anoReferente     
FROM  
    associado  
JOIN pagamento ON pagamento.nome = associado.nome  
WHERE pagamento.anoReferente = anoDigitadoPeloUsuario
AND pagamento.dtPagamento is null 

Pronto! Sua consulta de associados que estão sem pagar no ano informado está feita, agora você deverá implementar no seu programa

Te aconselho a estudar pelo menos o básico de comandos SQL, todos que se dizem programadores devem ao menos conhecê-la um pouco.