Newsgroup: it.comp.appl.access
Titolo: Query di selezione da due tabelle

E' da ieri che provo, ma finora sono solo riuscito a ricavare un gran mal di
testa.
Spero che qualcuno mi possa aiutare.
Il mio problema è questo:
Ho due tabelle, Anagrafiche e Anagrafiche1 (tabella collegata da un altro
db), con identica stuttura e numero di campi che all'inizio avevano anche
stesso numero di record.
Ora ho bisogno di selezionare i record della tabella Anagrafiche1 che sono
stati aggiunti o modificati da quando i due db sono stati aggiornati
separatamente.
Il risultato di questa query di selezione sarà usato in una query di
accodamento ad Anagrafiche.
I campi da controllare sono:
ID anagrafica (contatore e chiave primaria);
RicercaAlfabetica (testo);
Codice Fiscale (testo che può anche contenere null);
Partita Iva (testo che può anche contenere null).
La tabella Anagrafiche ha ora 2536 record, la tabella Anagrafiche1 ha ora
1496 record, le due tabelle avevano all'inizio 1245 record.
Ho provato anche con le autocomposizioni, ma niente.
Mentre scrivevo mi è venuto un dubbio: non è che questo problema è
risolvibile solo con la programmazione (intendo solo col codice)? Se è così,
mi fate anche un esempio?
Attendo fiducioso, ringraziando sin da ora chi potrà o vorrà aiutarmi.
GioVe

 ha scritto nel messaggio
news:dc0Yc.205737$5D1.9...@news4.tin.it...

Comunque risolverai il problema occorre sapere quale è la chiave primaria
delle due tabelle quale è il suo tipo dati.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:zp0Yc.69528$OH4.1...@twister1.libero.it...

La chiave primaria è il campo contatore 'ID anagrafica'
GioVe

 ha scritto nel messaggio
news:Et0Yc.205833$5D1.9...@news4.tin.it...

Se non ho capito male ,elle due tabelle, a parità di chiave primaria,
corrispondono record diversi: se così fosse penso sia necessario localizzare
una chiave univoca di apparigliamento tra le due tabelle, valida in ambedue
le tabelle.


 ha scritto nel messaggio
news:k11Yc.69587$OH4.1...@twister1.libero.it...

Esatto, nelle due tabelle, a parità di chiave primaria, corrispondono record
diversi.
Nè è possibile localizzare un'altra chiave primaria per le due tabelle in
quanto in tutti gli altri campi possono esserci valori duplicati o assenti.
GioVe

 GioVe
E allora la vedo veramente dura, e non ho una mia soluzione da suggerirti;
ti auguro che qualcuno abbia una soluzione, ma ho dei dubbi.


 Roberto
[CUT]
Ciao GioVe,
Credo che il tuo problema sia "parzialmente" risolvibile con alcune query
se conosci l'ultimo ID_Anagrafica  comune alle due tabelle (1245?), puoi
iniziare a trovare tutti quelli aggiunti dopo selezionando tutti quelli con
ID_Anagrafica > dell'ultimo.
Poi puoi provare ad individuare tutti quelli che non hanno subito modifiche
nei primi 1245 record mettendo in relazione tra loro  i campi ID_Anagrafica
delle due tabelle e impostando nei criteri l'uguaglianza tra tutti i campi
delle due tabelle.
Una volta trovati tutti quelli che non sono cambiati facendo una query del
tipo
Select Anagrafica1.ID_Anagrafica, Anagrafica.RicercaCampi, Anagrafica1.CF,
Anagrafica1.PV
Where ID_Anagrafica Not in (Select ID_Anagrafica From Q_NonModificati)
Dovresti trovare in questo modo tutti quelli modificati nella seconda
Tabella a questo punto però devi supporre che i dati corretti siano nella
saeconda tabella perchè se sono state fatte delle modifiche anche nella
prima è  praticamente impossibile capire qual'è il dato giusto da prendere.
Spero che questi suggerimenti ti possano essere d'aiuto
Saluti
Cinzia


Ciao Cinzia,
ti ringrazio di avermi dato questa speranza.
Credo che i tuoi suggerimenti mi saranno molto d'aiuto.
Saluti
GioVe

 Questa query non l'ho capita. Me la puoi spiegare più in dettaglio?
L'idea è questa supponiamo che tu sia riuscito a fare una query che trova
tutti i record uguali nelle due tabelle e che questa query sia stata salvata
con il nome "Q_nonModificati".
L'istruzione
Select Anagrafica1.ID_Anagrafica, Anagrafica1.RicercaCampi, Anagrafica1.CF,
Anagrafica1.PIVA Where ID_Anagrafica Not in (Select ID_Anagrafica From
Q_NonModificati)
sostanzialmente seleziona dalla tabella Anagrafica tutti i record che non
sono presenti in Q_NonModificati, cioè seleziona tutti quelli che hanno
subito delle modifiche.
Spero che la spiegazione sia stata chiara (ho qualche dubbio...)  ma al
momento non mi viene una spiegazione migliore!
Saluti
Cinzia

 ha scritto nel messaggio
news:cgtakg$dt7$1...@lacerta.tiscalinet.it...

Bellissimo, funziona tutto! E ho anche capito!
Cinzia, sei impagabile!
Ti ringrazio tantissimo, ero lì lì per desistere e buttare tutto.
Ciao


Molto bene!
Cinzia