Newsgroup: it.comp.appl.access
Titolo: query per la realizzazione di relazioni tra n soggetti

Ho un data base che mi serve a gestire un tot numero di progetti.
I progetti sono realizzati da piu' soggetti.
Questi soggetti sono associati ad un comune e ad un codice istat.
Mi chiedono di generare una tabella con tutte le relazioni tra soggetti 
    di tutti progetti.
tipo
progetto A
3 soggetti partecipanti x,y,z,k
x-y
x-z
x-k
y-z
y-k
x-k
ho provato di mio con l'aiuto di un ing. che mi ha spiegato che e' un 
calcolo vettoriale
ho tre query
1)
SELECT MM_ProgettoSoggetti.ePROGETTI, TAB_SOGGETTI.eCOMUNE
FROM TAB_SOGGETTI INNER JOIN MM_ProgettoSoggetti ON 
TAB_SOGGETTI.ID_SOGGETTO = MM_ProgettoSoggetti.eSOGGETTI;
siccome ci sono relazioni molti a molti questa associa ad ogni progetto 
i suoi soggetti
2)
SELECT Q_ProgettiComuni.ePROGETTI, E_COMUNI.ISTAT AS IstatCom1, 
E_COMUNI.INT
 AS Interno1, Q_ProgettiComuni.eCOMUNE AS Comune1, 
E_COMUNI_1.INT
 AS Interno2, E_COMUNI_1.ISTAT AS IstatCom2, 
Q_ProgettiComuni_1.eCOMUNE AS Comune2, 1 AS Cont
FROM ((Q_ProgettiComuni INNER JOIN Q_ProgettiComuni AS 
Q_ProgettiComuni_1 ON Q_ProgettiComuni.ePROGETTI = 
Q_ProgettiComuni_1.ePROGETTI) INNER JOIN E_COMUNI ON 
Q_ProgettiComuni.eCOMUNE = E_COMUNI.ID_COMUNE) INNER JOIN E_COMUNI AS 
E_COMUNI_1 ON Q_ProgettiComuni_1.eCOMUNE = E_COMUNI_1.ID_COMUNE
WHERE (((Q_ProgettiComuni.eCOMUNE)<[Q_ProgettiComuni_1].[eCOMUNE]));
questa dovrebbe crearmi la tabella di incrocio tra i comuni (il campo 
COMUNI.INT
 e' solo un si no che mi consente di escludere delle aree)
la formulazione where dovrebbe evitarmi di duplicare le relazioni
questa e' la soluzione propostami ed incollata ma non domino ne la where 
ne la inner join
3)
SELECT Q_IncrociaProgettiComuni.Interno1, 
Q_IncrociaProgettiComuni.IstatCom1, Q_IncrociaProgettiComuni.Comune1, 
Q_IncrociaProgettiComuni.Interno2, Q_IncrociaProgettiComuni.IstatCom2, 
Q_IncrociaProgettiComuni.Comune2, Sum(Q_IncrociaProgettiComuni.Cont) AS 
Frequenze
FROM Q_IncrociaProgettiComuni
GROUP BY Q_IncrociaProgettiComuni.Interno1, 
Q_IncrociaProgettiComuni.IstatCom1, Q_IncrociaProgettiComuni.Comune1, 
Q_IncrociaProgettiComuni.Interno2, Q_IncrociaProgettiComuni.IstatCom2, 
Q_IncrociaProgettiComuni.Comune2;
Questa mi fa la somma...
Il problema e' che facendo a mano i calcoli....avevo 500 relazioni...ora 
con il db 1500. E' vero che ho aggiunto qualcosa ma voglio sicuro che 
queste query mi diano il risultato che ho descritto sopra.
Grazie per l'aiuto
nicolinux

 3 soggetti partecipanti x,y,z,k
z ha il doppi nome tipo carlo Azeglio???

Oh, figlio del pinguino!!!
Allora, tu hai la tabella Progetto con i campi che
vuoi e un IdProgetto.
Poi hai la tabella Collaboratori con un campo che
lega a idProgetto.
Relazione 1(progetto) a molti (collaboratori)
Realizzi la maschera su tab progetto e hai la
sottomaschera dei collaboratori che partecipano.
Realizzi la maschera Collaboratori e hai la
sottomaschera dei progettia cui partecipano.
Progetto A
Collaboratore A B C
Progetto B
Collaboratore B C
Collaboratore B
Progetto A B
Non è difficilissimo, sempre se ho capito cosa ti
serve.
MAssimiliano

La relazione è molti a molti
perche' quelli che tu chiami collaboratori lavorano su piu' progetti e 
piu' progetti possono avere piu' collaboratori.
io poi i collaboratori li devo mettere tutti in relazione tra di loro 
cosi' come ti ho scritto prima...non mi serve solo l'elenco!
