Eu faria assim:

+--------------+       +--------------+       +----------+
|  Associado   |       | Recebimento  |       | Anuidade |
+--------------+       +--------------+       +----------+
| Codigo       |------>| Cd Associado |<------| Codigo   |
| Matricula    |       | Cd Anuidade  |       | Ano      |
| Nome         |       +--------------+       | Valor    |
| AnoFiliacao  |                              +----------+
+--------------+


Select A.Matricula, A.Nome
   From Associados A Left Outer Join Recebimento R
        on (A.Codigo = R.Codigo)
  Where A.AnoFiliacao >= :AnoInformado
  Group By A.Matricula, A.Nome
  Order By A.Matricula, A.Nome


P.S.: Confere aí porque fiz correndo e não testei.

Sds,

Romario



velhavirgem escreveu:
> 
> Prezados, Boa Tarde,
> 
> Estou tentando fazer uma SQL por exclusão e não estou conseguindo, vou
> explicar a seguir, caso alguém tenha alguma sugestão a mesma será

> muito bem vinda.
> 
> Os campos marcados com -> são os campos da tabela.
> 
> Tenho 3 tabelas:
> "associados.db"->[matricula, nome, ano_filiacao]
> "recebimentos.db"->[matricula, nome, valor, ano, quitado]
> "valor.db"->[ano, valor].
> 
> A tabela "associados.db" tem os nomes dos sócios que precisam efetuar
> pagamentos e o ano de filiacao (ano_filiacao é usado para saber à
> partir de qual ano o associado começou a ter que pagar a anuidade.
> Ex.: ano_filiacao = '2003'; o associado precisa pagar 2003, 2004 e
> 2005 os valores obtidos da tabela "valor.db").
> 
> A tabela "recebimentos.db" possui a matricula do associado que está
> devendo(quitado = 'N') ou que já pagou(quitado = 'S').
> 
> A tabela "valor" só tem o ano e o valor a ser cobrado no ano.
> 
> O que eu preciso fazer é o seguinte: selecionar todos os associados
> que NÃO efetuaram o pagamento; ou seja os associados que tem na tabela
> "recebimentos" o campo (quitado = 'N') ou que não existam na tabela
> "recebimentos". O sql descobriria que o associado não está na tabela
> "recebimentos" e pegaria o valor vindo da tabela "valor.db" se o
> associado existir na tabela de recebimento pega o valor vindo da
> tabela "recebimento", agrupando por ANO em ambos os casos.
> 
> A tabela "recebimentos" não possui os débitos de todos os associados,
> possui apenas alguns débitos referentes ao parcelamento do valor total
> e débitos já pagos.
> 
> Já pensei em gerar débitos para todos os associados, mas isso geraria
> um lixo muito grande na tabela já que somente uns 60% dos sócios
> (aproximadamente 15.000) efetuam os pagamentos corretamente e os
> valores a serem cobrados começam no ano de 1995.
> 
> Atualmente estou usando uma tabela temporária que demora cerca de 10
> minutos para gerar todos os dados.
> 
> Como ficaria uma sql que faria esta busca!? Estou completamente sem idéia.
> 
> Atenciosamente,
>      Rodrigo de Aquino
>      aquinos.com.br



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a