Newsgroup: it.comp.software.database
Titolo: niubbina - problema con tabelle collegate

Ho due database molto voluminosi (520mila record uno e 450mila l'altro).
Essi contengono vari campi e solo uno è comune ad entrambi.
In pratica:
campi di DB1:
    - ID
    - RAGIONE SOCIALE
    - P.IVA
    - altri...
campi di DB2:
    - ID (comune a DB1)
    - INDIRIZZO
    - TELEFONO
    - altri...
Il mio problema è: ricavare un DB unico che contenga record sia dell'uno che
dell'altro DB: ID, RAGIONE SOCIALE, INDIRIZZO, TELEFONO, eventuali altri,
considerato che i due DB di origine non contengono esattamente gli stessi
record...
Come posso fare senza impazzire?!...
--
AiS

Dimenticavo di precisare  che  parlavo di Access (97) su Win (95)

Ho collegato le due tabelle, ma poi non riesco a far uscire il nuovo
database!




se ho ben capito ci sono chiavi comuni ad entrambe le tabelle e altre che
sono solo in una delle due.
la prima cosa che mi viene in mente è
select tabella1.*, tabella2.* from tabella1 left join tabella2 on
tabella1.id
 = 
tabella2.id
union
select tabella1.*, tabella2.* from tabella1 right join tabella2 on
tabella1.id
 = 
tabella2.id
ilrisultato saranno 520000 + 450000 record , ok ?
chiami questa query query1.
poi fai una query di creazione tabella che faccia una select distinct ,
oppure un'aggregazione.
se fosse mysql sarebbe così
create table risultato select distinct * from query1
in questo modo elimini i record doppi.
fammi sapere se funziona.

 fammi sapere se funziona.
Sono proprio una niubba e sinceramente non c'ho capito niente, potresti
essere cosě gentile da spiegarmi passo-passo cosa devo fare?
--
AiS


allora ricapitoliamo.
tu hai il databade db1 in cui c'è la tablella tab1 e il database db2 in cui
c'è la tabella tab2 (non è il database che contiene i campi, bisogna essere
precisi se no si rischia di confondere chi legge).
tu vuoi crearti una tabella tab3 in cui ci siano tutti i campi di tab1 e
tab2 in base ad un campo comune, cioè per esempio ,se
tab1
ID Campo2 Campo3
1      aaa       eee
2      bbb      fff
3      ccc      ggg
tab2
ID Campo2 Campo3
2      jjj           ooo
3      kkk        ppp
4      lll            qqq
in output tu vuoi
tab3
ID Tab1.campo2 Tab1.campo3 Tab2.campo2 Tab2.campo3
1          aaa              eee
2          bbb             fff                       jjj               ooo
3          ccc             ggg                     kkk            ppp
4                                                       lll
qqq
questo per lo meno è quello che ho capito dal tuo post , se ho capito male
casomai posta di nuovo.
a meno che tu non voglia semplicemente accodare i record di uno a quelli
dell'altro , ma questo non vedo che senso potrebbe avere.
ho fatto la prova empirica e funziona , il codice è questo
QUERY1:
SELECT Tab1.ID, Tab1.campo2, Tab1.campo3, Tab2.campo2, tab2.campo3
FROM Tab1 LEFT JOIN Tab2 ON Tab1.ID = Tab2.ID;
UNION
SELECT Tab2.ID, Tab1.campo2, Tab1.campo3, Tab2.campo2, tab2.campo3
FROM Tab1 RIGHT JOIN Tab2 ON Tab1.ID = Tab2.ID;
devi riportare questo codice nella finestra "visualizza sql" e poi salvarlo
col nome query1
QUERY2:
qui basta fare una query di creazione tabella basata su query1 ed è fatta.
il codice SQL comunque è questo (casomai lo metti su una nuova finestra sql
e lo salvi come query2.
SELECT Query1.* INTO tab3
FROM Query1;
il codice che ti avevo mandato l'altra volta aveva un paio di errorucci
effettivamente, e poi mi ero dimenticato (perchè sono passato a MYSQL) che
la union elimina automaticamente i record doppi
comunque il concetto generale andava bene.
se sai cosa sono un left join e un right join (in pratica quelle linee che
collegano due tabelle in una query, se hanno una freccia a destra o sinistra
sono rispettivamente left e right join) non dovresti avere problemi a capire
il codice.
se no c'è un problema. d'altra parte lavorare su db non è una cosa che si
improvvisa o si può fare così una tantum , richiede un impegno non saltuario
perchè ci sono dei concetti alla base che non sono immediati.
comunque se vuoi ti mando il db di esempio via e-mail , così te lo guardi
con calma.
spero di esserti stato utile
ciao