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