Newsgroup: it.comp.appl.access
Titolo: Relazione tra due tabelle

Ho un archivi  in cui è inserito l'elenco clienti e vorrei che gli stessi
fossero messi in relazione tra di loro in modo che tramite una query possa
avere l'elenco di tutti gli altri che sono in relazione con quello
selezionato.
ES:
cliente A
cliente B
cliente C
cliente D
A moglie di B
B padre di C
C figlio di A
D amica di A
Tramite la query selezionando A la risposta dovrebbe essere
A  genitore di C
A  moglie  di B
A amica di D
Stessa cosa per gli altri.
Come devo fare ?

 eventuali cancellazioni .
Non mi pare la soluzione giusta.
La relazione e' tra elementi della stessa tabella, non tra elementi di
tabelle diverse, una autorelazione (una relazione della tabella con se
stessa) si avvicinerebbe alla soluzione, ma non sarebbe sufficiente perche'
non e' definito a priori con quanti elementi della tabella e' in relazione
ogni singolo elemento (uno puo' essere da solo, oppure essere il padre di di
un'altro, lo zio di un'altro ancora e il nonno di chissa quanti altri
elementi.
La soluzionbe migliore mi pare una atuorelazione attraverso una tabella
esterna che riporta il tipo di parentela:
TabellaElementi
ID    Nome
1    Pippo
2    Marta
3    Giuseppe
TabellaRelazioni
ID1    ID2    Parentela
1        2        Marito                (Pippo e' marito di Marta (e quindi
marta e' moglie di Pippo))
1        3        Padre                (Pippo e' padre di Giuseppe)
2        3        Madre                (Marta e' madre di Giuseppe)
(che Marta e' madre di Giuseppe bisogna specificarlo perche' non e' detto
che la moglie di Pippo sia effettivamente la madre del figlio di Pippo)
La relazione tra le due tabelle e', ovviamente:
ID uno a molti con ID1
ID uno a molti con ID2
In questo modo ogni elemento della TabellaElementi puo' avere una, molte o
nessuna relazione con gli altri elementi della tabella stessa.
Ciao, Sib
--
------------------------------------------------------
il sito comune di it.comp.database.access:
http://members.xoom.it/it_db_access
------------------------------------------------------
4000 anni fa', il saggio egizio Ptahhotep scrisse:
"... perche' non esistono saggi per nascita."
------------------------------------------------------
Saturiamo ECHELON:
bomba saddam attentato medio oriente

Non è possibile scrivere una routine che mi permetta di :
dato A GENITORE B allora B FIGLIO/A  A
che mi trasferisca i dati nella tabella  delle relazioni  con il solo
inserimento di uno dei due soggetti.
Come la devo inserire nella query ?

 inserimento di uno dei due soggetti.
E' una affermazione o una domanda?
Comunque, ovviamente, e' possibilissimo.
Dipende da come strutturi la cosa.
In realta' mi ero fatto la convinzione che il tuo esempio sulle parentele
fosse indicativo, ma sembra che invece tu debba gestire proprio delle
parentele. In ogni caso io farei cosi':
una volta implementate le parentele per come ho gia' detto, ti crei una
tabella che per ogni tipo di parentela indichi le relative parentele
inverse:
TabellaParenteleInverse
ID        Parentela            ParentelaInversa
1        Padre                    Figlio/a
2        Zio                         Nipote
3        Nonno/a                Nipote
4        Bisnonno/a           Bisnipote
5        Fratello/Sorella    Fratello/Sorella
Puoi anche modificare la tabella parentele che ti avevo indicato prima da:
ID1        ID2        Parentela
1            2            Padre
ecc
a:
ID1        ID2        IDParentela
1            2            1
E relazionare IDParentela all'ID della tabella parentele inverse. in questo
modo non avrai ridondanze, avrai una migliore normalizzazione del db e,
soprattutto, avrai direttamente, oltre alla parentela 1-2 anche la parentela
inversa 2-1.
Ci sono molti modi di affrontare un problema, il modo migliore dipende dai
risultati che devi ottenere, non si puo' quindi prescindere dal caso reale.
Ciao, Sib