Newsgroup: it.comp.appl.access
Titolo: [?] Differenza insiemistica

Ciao a tutti,
vi sottopongo un problema che vi sembrerà estremamente banale, ma mi sta
facendo dannare: sto realizzando un piccolo database di gestione
dell'anagrafica soci dell'associazione di cui faccio parte e non riesco a
impostare una query che elenchi tutti i soci che non hanno pagato la quota
per l'anno in corso. Pensavo di ottenerlo utilizzando l'operatore EXCEPT di
differenza insiemistica, ma forse ACCESS non lo supporta. Avete qualche
suggerimento?
Grazie tante.
Davide
---
S.O.S. Novate Milanese - Ass. Volontaria Pronto Soccorso e P.A.
Web: 
http://www.sosnovate.org
--
Posted from 
laguna.tiscalinet.it
 [195.130.224.86] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ---
Pensi che qualcuno ti risponda se prima tu non dici come sono organizzate le
tabelle, che cosa contengono e come sono  in relazione fra di loro?
Non credi infine che sia troppo scomodare il concetto di differenza
insiemistica per sapere chi ha pagato o meno la quota associativa?
Roberto

 (.....)
Qualche "dettaglio" in più, please:
tabelle e struttura delle medesime, almeno !
Pensa a cosa risponderesti a chi telefona per chiedere l'intervento di
un'ambulanza dicendo semplicemente:
"Correte ! C'è stato un incidente con feriti !".  :-))
----------------------------------
Niuna impresa, per minima che sia,
può avere cominciamento e fine
senza queste tre cose:
e cioè senza sapere,
senza potere,
senza, con amore, volere.
---------------------------
Anonimo fiorentino sec. XIV

 suggerimento?
La via piu' breve tra due punti e' senz'altro la linea retta.
Perche' ti complichi la vita?
Per risponderti ci sarebbe bisogno di qualche chiarimento tipo:
C'e' un flag che dice se un socio ha pagato? Se si', dov'e'?
C'e' una data che dice quando il socio ha pagato? Se si', dov'e'?
In ogni caso una cosa e' certa, la "differenza insiemistica" non puo'
aiutarti granche'.
Se hai un flag:
SELECT * FROM TabellaConFlag WHERE TabellaConFlag.Flag = 0
Se hai una data:
SELECT * FROM TabellaConData WHERE TabellaConData.DataScadenza > Date
Ho scritto all'impronta e potrei aver fatto degli errori, ma la strada
dovrebbe essere questa.
Sib

 ha scritto nel messaggio
news:8o05m2$ti3$1...@pegasus.tiscalinet.it...

Pardon.
TabellaConData.DataSacdenza < Date


per l'anno in corso. 
Magari comincia a dirci dove sta scritto se il tal socio ha
pagato o meno...
--
Lorenzo Coronati
--
<<Io studio ing gestionale e dei non laureati 
che mi sputano in faccia mi faccio beffe.>>
(Andrea "Mr Bad Guy", 10/07/2000)
--


Il paragone calza perfettamente! :-)))
Scusate... mi sono anche detto: devo postare la definizione delle tabelle,
altrimenti... purtroppo avevo fretta e mi sono rimaste nella tastiera!
tblAnagrafica:
idSocio (chiave primaria)
Cognome, Nome, altri dati vari
tblPagamenti:
idPagamento (chiave primaria)
idSocio (chiave esterna per tblAnagrafica)
DataPagamento
NrRicevuta
Le due tabelle sono in relazione 1:M tramite idSocio.
L'idea sarebbe quella di mantenere uno storico dei pagamenti dei soci: e
ogni fine d'anno avere un elenco di quanti non si sono ricordati del
pagamento.
Purtroppo (come si nota subito) non sono per nulla esperto di database e mi
sono arenato subito! :-)
Grazie tante.
Davide
---
S.O.S. Novate Milanese - Ass. Volontaria Pronto Soccorso e P.A.
Web: 
http://www.sosnovate.org
--
Posted from 
twingo.tiscalinet.it
 [195.130.224.85] 


 ha scritto nel
messaggio news:001401c00db5$83135da0$eb350b3e@it...

Questa soluzione prevede che tblPagamenti contenga lo storico dei pagamenti;
a tale scopo occorre che in questa tabella tu inserisca un altro campo
(numerico) che conterrà l'anno di competenza della quota associativa (io
l'ho chiamato AnnoCompetenza); infatti, per i ritardatari, l'anno di
DataPagamento potrebbe essere quello successivo a quello di competenza.
Creati una prima query (Query1) che estrae da tblPagamenti coloro che hanno
pagato la quota associativa di quest'anno; questo è il codice SQL di Query1:
SELECT tblPagamenti.IdSocio, tblPagamenti.AnnoCompetenza
FROM tblPagamenti
WHERE (((tblPagamenti.AnnoCompetenza)=2000));
Ora creati la query che ti dà l'elenco nominativo di coloro che non hanno
ancora pagato la quota associativa di quest'anno; questo è il codice SQL di
questa seconda query:
SELECT tblAnagrafica.IdSocio, tblAnagrafica.Cognome, tblAnagrafica.Nome
FROM tblAnagrafica LEFT JOIN Query1 ON tblAnagrafica.IdSocio =
Query1.IdSocio
WHERE (((Query1.AnnoCompetenza) Is Null));
Ciao
Roberto

Grazie a tutti per il prezioso aiuto!
Davide
---
S.O.S. Novate Milanese - Ass. Volontaria Pronto Soccorso e P.A.
Web: 
http://www.sosnovate.org
--
Posted from 
mail.lombardiacom.it
 [212.34.224.130] 
