Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
UPDATE con valori restituiti da SUBQUERY
martedì 26 ottobre 2010 - 10.40
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 3.5
|
Windows XP
|
Visual Studio 2005
|
Access (.mdb)
|
Office 2007
Barabas
Profilo
| Junior Member
102
messaggi | Data Invio:
mar 26 ott 2010 - 10:40
Salve a tutti,
ho un database Access 2007 che semplificando è di questo tipo:
2 tabelle uguali, PRIMA e SECONDA che hanno i seguenti campi:
ID di tipo contatore,
NOME di tipo stringa,
VALORE di tipo numerico
e ID2 di tipo numerico
vorrei fare una query di UPDATE che mi aggiorni SECONDA.ID2 mettendoci gli ID della prima tabella il cui campo VALORE è uguale al campo VALORE della seconda tabella.
Ho consultato un manuale sql McGraw-Hill che dice che posso farlo con una query del tipo:
update seconda set id2=(select id from prima where prima.valore=seconda.valore)
purtroppo Access mi restituisce l'errore:
"Per l'operazione è necessaria una query aggiornabile. (Errore 3073)
Si è tentato di eseguire, aprire o modificare una query non aggiornabile.
Possibili cause:
Si è tentato di eseguire una query che ha cercato di aggiornare un campo che non può essere aggiornato. La query, ad esempio, potrebbe essere stata creata in modo da eseguire un tentativo di aggiornare un campo del lato "uno" di una relazione uno-a-molti. ..."
Inoltre cercando in rete ho notato che il problema si presenta molto spesso nella programmazione WEB quando non si hanno i diritti di modifica, ma non è il mio caso, io sono in locale e i diritti ce li ho.
Vorrei capire se è ACCESS 2007 che non può eseguire una query del genere o è il manuale che sto leggendo che non è corretto, o se devo impostare qualcosa di particolare per rendere la mia query aggiornabile.
Gazie in anticipo
Ciao
Barabas
PS ho trovato questo post
http://it.w3support.net/index.php?db=so&id=170578
dove si dice che il problema è che il motore JET di Access non è completamente compatibile con lo standard SQL per l'istruzione update, e riporta questo articolo della Microsoft con alcuni workaround:
http://support.microsoft.com/default.aspx?scid=kb;en-us;116142&produc
in pratica suggerisce 3 modi:
1) processare un record alla volta: impossibile sono troppi.
2) usare una tabella temporanea: sigh quelle sono già tabelle temporanee...
3) usare una Domain Function: non ho idea di cosa sia...
boccia75
Profilo
| Junior Member
109
messaggi | Data Invio:
mar 26 ott 2010 - 11:06
La prima cosa che ti chiedo è questa: per un dato valore del campo valore, sei sicuro di avere l'univocità del campo id?
Se il campo valore vale 100 e per quel valore ho due id, come dovrebbe lavorare la query secondo te?
Per me il problema è tutto lì.
dinoxet
Profilo
| Senior Member
484
messaggi | Data Invio:
mar 26 ott 2010 - 11:17
PERCHè NON CI POSTI IL DB CON LE DUE TABELLE E QUALCHE DATO DI ESEMPIO?
DINOXET
__________________________________________
impossible is only a word
Barabas
Profilo
| Junior Member
102
messaggi | Data Invio:
mar 26 ott 2010 - 11:38
Grazie dell'indicazione, ma nel database che sto usando per testare i valori del campo VALORE sono progressivi quindi all'interno di una singola tabella non ce sono 2 uguali.
Sinceramente all'inizio non ci avevo pensato e quindi è stato per caso che l'ho fatto così, resta comunque che non è questa la causa del problema.
Barabas
Barabas
Profilo
| Junior Member
102
messaggi | Data Invio:
mar 26 ott 2010 - 11:42
Posso anche postarlo, appena capisco come fare, ma non è niente di speciale, solo le 2 tabelle che ho descritto, l'ho fatto apposta per provare nel modo più semplice possibile e per essere sicuro che l'errore non fosse causato da qualcosa di più difficile da notare in un contesto più complesso.
Barabas
dinoxet
Profilo
| Senior Member
484
messaggi | Data Invio:
mar 26 ott 2010 - 11:45
basta cliccare su allega un file (deve essere in formato zip)
DINOXET
__________________________________________
impossible is only a word
Barabas
Profilo
| Junior Member
102
messaggi | Data Invio:
mar 26 ott 2010 - 15:34
1462_prova1.zip
ho caricato in allegato il db di prova
Barabas
dinoxet
Profilo
| Senior Member
484
messaggi | Data Invio:
mar 26 ott 2010 - 17:01
PROVA COSì :
UPDATE prima INNER JOIN seconda ON prima.valore = seconda.valore SET seconda.id2 = [prima]![id];
DINOXET
__________________________________________
impossible is only a word
Barabas
Profilo
| Junior Member
102
messaggi | Data Invio:
mar 26 ott 2010 - 17:59
Funziona, grazie mille!! Non avevo mai usato la JOIN per fare l'UPDATE, sinceramente non pensavo neanche che fosse possibile.
Grazie ancora anche per avermi fatto imparare una cosa nuova.
Barabas
gianphydnh
Profilo
| Newbie
5
messaggi | Data Invio:
ven 17 mag 2013 - 20:14
>PROVA COSì :
>
>UPDATE prima INNER JOIN seconda ON prima.valore = seconda.valore
>SET seconda.id2 = [prima]![id];
>
>
>DINOXET
>__________________________________________
>impossible is only a word
Ciao DINOXET
io ho un problema simile ed avrei bisogno del tuo aiuto, visto che sei parecchio in gamba col SQL.
Mi daresti una mano?
dinoxet
Profilo
| Senior Member
484
messaggi | Data Invio:
ven 17 mag 2013 - 20:29
Di pure ma magari apri un post
Nuovo
Tutti se possiamo ti dirtemo la nostra
DINOXET
__________________________________________
impossible is only a word
gianphydnh
Profilo
| Newbie
5
messaggi | Data Invio:
ven 17 mag 2013 - 20:50
Grazie,
l'ho appena pubblicato, unitamente al file di Access 2010 ed a una breve spiegazione del problema.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !