Newsgroup: it.comp.appl.access
Titolo: numero di caratteri differenti

Ho un DB con una tabella cosě strutturata:
Tabella1
Partita_IVA  (campo di 11 caratteri)
Cognome
Nome
Tabella2
Partita_IVA (campo di 10 caratteri)
Come posso fare una query che confronti solo i primi 10 caratteri di
Partita_IVA in Tabella1 con i 10 caratteri di Partita_IVA di Tabella2?
Grazie a tutti.

 ha scritto nel messaggio
news:04FD6.1998$ba7....@news1.tin.it...

La query la lascio a te, tieni invece presente che per estrarre i primi
dieci caratteri non devi fare altro che usare una delle ormai storiche
funzioni del basic (Io la usavo sul Vic20 20 anni fa)
Left([TuoCampo];10)
Sib
--
----------------------------------------------------
la mia home:
http://digilander.iol.it/syb
----------------------------------------------------
il sito comune di it.comp.database.access:
http://www.sitocomune.com
----------------------------------------------------
4000 anni fa', il saggio egizio Ptahhotep scrisse:
"... perche' non esistono saggi per nascita."
------------------------------------------------------
Saturiamo ECHELON:
bomba saddam attentato medio oriente

 Ho un DB con una tabella così strutturata:

Ma sei sicuro che i 10 caratteri di Partita_IVA di Tabella2 corrispondono ai
primi 10 caratteri di Partita_IVA di Tabella1 e magari non corrispondono
agli ULTIMI 10 caratteri?
Mi sembra di ricordare dal tuo precedente messaggio che ne sei sicuro, io
invece mantengo le mie perplessità; anzi sono matematicamente certo che
tagliando l'ultimo carattere del campo Partita_IVA esso non può più essere
usato come chiave primaria di Tabella1, infatti potenzialmente così facendo
esisteranno dieci record con la stessa partita IVA; ne consegue che facendo
il join tra le due tabelle, ogni record della Tabella2 prenderà a caso il
nome e cognome tra dieci possibili. Sei sicuro che vuoi fare questo?
Comunque, solo a puro scopo didattico, ma in pratica è per me un assurdo, se
i campi Partita_IVA sono di tipo testo, la query che mette le due tabelle in
join tramite i primi 10 caratteri di Partita_IVA di Tabella1 e di
PArtita_IVA di Tabella2 ha il seguente codice SQL:
SELECT Tabella1.*, Tabella2.*
FROM Tabella1 INNER JOIN Tabella2 ON Left(Tabella1.Partita_IVA ,10) =
Tabella2.Partita_IVA;
Mi permetto però di insistere sul fatto che stai commettendo un errore
madornale, a meno che l'undicesimo carattere di Partita_IVA di Tabella1 non
abbia lo stesso valore per tutti i record.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 > Ho un DB con una tabella così strutturata:
[...Cut...]

In effetti hai proprio ragione: potenzialmente, troncando l'ultimo numero
della Partita IVA possono corrispondere allo stesso numero 10 persone
differenti, ma dedvi anche considerare che il numero di persone presenti nel
mio elenco è piuttosto limitato, perciò non dovrei aver problemi di
duplicazione.
Comunque ti tingrazio per i consigli che, per inciso, hanno funzionato.
Ciao. Giancarlo.


Grazie. Tutto OK!.
Ciao. Giancarlo.

 abbia lo stesso valore per tutti i record.
Ciao Roberto,
per una volta vorrei dissentire da quanto affermi.
L'undicesimo carattere della Partita IVA non è libero, ma strettamente
calcolato e non permette deroghe (come nel caso del codice fiscale): quindi
alle prime 10 cifre della P.Iva corrisponde 1 undicesimo fisso, da qui
l'unicità delle prime 10 cifre.
L'undicesimo carattere è inserito solo a scopo di controllo.
--
Silvio
il sito comune di it.comp.appl.access:
http://www.sitocomune.com

 ha scritto nel messaggio
news:_4dF6.352$PE.1...@news.infostrada.it...

Ammetto la mia ignoranza circa il contenuto dell'undicesimo carattere del
codice IVA, pertanto chiedo scusa per la cantonata presa, innanzitutto a
Giancarlo.
In compenso significa che la mia soluzione è valida senza riserve. :-)
(Come dire che chi si contenta gode :-) )


 In compenso significa che la mia soluzione è valida senza riserve. :-)
... e su questo non avevamo dubbi... ;-)
