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
[Access2007] UPDATE annidate con SELECT e "query aggiornabile"
venerdì 19 novembre 2010 - 01.18
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
Access (.mdb)
romualdo85
Profilo
| Newbie
3
messaggi | Data Invio:
ven 19 nov 2010 - 01:18
Salve a tutti,
so che chiamare "Access" un database è un sacrilegio.. ma purtroppo mi trovo a dover lavorare con questo (per di più emulato in un mac
)
Il mio problema, o almeno il primo, è questo ; ho una tabellona che è il risultato di un'aggregazione progressiva di più tabelle riguardanti dati vitivinicoli, così mi trovo a dover assegnare codici vino.
Questa tabella ha queste importanti colonne per ciò che devo fare( Idcantina, idvino,vino), su tutta la tabella sono già inseriti tutti gli idcantina ed vino ma mancano ancora diversi idvino che devono essere "armonizzati" perchè frutto dell'aggregazione di più tabelle.
Ora io devo attribuire ad un certo vino x di una cantina X un idvino x per esempio.. se il vino è lo stesso ovvero se l'Idcantina e vino sono gli stessi(ma gli attributi secondari no) e manca l'idvino(ovvero è a NULL per il momento) all'idvino dovrà essere ancora assegnato x.
Ora il problema è che in access per fare una update della colonna idvino mi devo servire di una select annidata (almeno io l'avevo pensata così) di questo tipo:
UPDATE TAB T
SET T.IDVINO=(
SELECT DISTINCT T1.IDVINO
FROM TAB T1
WHERE T1.IDCANTINA=T.IDCANTINA AND T1.VINO=T.VINO AND IDVINO IS NOT NULL);
Solo che access non me la fà eseguire perchè mi dice qualcosa del tipo: "Operazione deve utilizzare una query aggiornabile" che non ho la più pallida idea di che cosa voglia dire (dato che non ho mai usato access ma di solito database seri tipo oracle, mysql and co, ma ora sono costretto ad usare questo!
).
Come posso fare? la query è giusto? mi consigliate qulcos'altro?
2) La domanda 2 è subordinata alla risoluzione della prima comunque la chiedo ugualmente; dovrò quindi continuare a completare la colonna Idvino ma in questo caso dovrò assegnare id nuovi progressivi (per esempio se ho un vino nuovo y nella cantina x dovrò dare un progressivo successivo all'ultimo idvino presente nella cantina; oppure se ho una cantina nuova e quindi vini nuovi dovrò ri-iniziare da 0); come posso fare una update del genere?!
Grazie mille per l'aiuto e attendo fiducioso! ^^
Marco
dinoxet
Profilo
| Senior Member
484
messaggi | Data Invio:
ven 19 nov 2010 - 16:45
PROVA COSì E FAMMI SAPERE :
UPDATE T
SET T.IDVINO=T1.IDVINO
FROM T1 INNER JOIN T ON T1.IDCANTINA=T.IDCANTINA AND T1.VINO=T.VINO AND IDVINO IS NOT NULL;
DINOXET
__________________________________________
impossible is only a word
romualdo85
Profilo
| Newbie
3
messaggi | Data Invio:
sab 20 nov 2010 - 23:08
Grazie mille per la risposta..
con questa versione un po’ modificata della tua query:
update tabella as t1
inner join tabella as t2
on t1.vino = t2.vino and t1.idcantina=t2.idcantina
set t1.idvino = t2.idvino
where t1.idvino is null
sembra compilare!
una sola cosa continua a lasciarmi in dubbio (e quindi non do' il commit..) e cioe’ che una volta processato dice che una cosa come 175000 righe saranno cambiate.. quando la tabella ne contiene sulle 75000 e ovviamente solo una piccola parte dovrebbe essere interessata da questo update.
Cosa mi sfugge?
dinoxet
Profilo
| Senior Member
484
messaggi | Data Invio:
lun 22 nov 2010 - 10:25
175000 RIGHE SONO LA SOMMA DEI RECORD DELLE 2 TABELLE?
DINOXET
__________________________________________
impossible is only a word
romualdo85
Profilo
| Newbie
3
messaggi | Data Invio:
lun 22 nov 2010 - 12:48
Bè no.. dato che sarebbe 75000X2= 150000 ...ma potrebbero essere la somma dei record delle due tabelle(cioè la stessa in "autojoin") + quelli realmente elaborati.. e avrebbe un certo senso.
In ogni caso grazie mille.. sono risciuto a risolvere con la query sopracitata.. e per la seconda parte ho usato un formula in excel.
grazie ancora!
Marco
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 !