salve scusate, sono nuovo e non so se la sezione sia quella giusta, ma ho visto facendo ricerche che molti postano qui problemi simili... vabbe casomai scusatei in anticipo...
dovrei risistemare un database aggiungendo informazioni di sintesi, ma non riesco a farlo con un update, per ora sono costretto ad usare l'insert into ma è veramente scomodo e preferirei farlo con un update...
sto utilizzando access 2002, ho un database con le tabelle:
clienti con i campi codcli (codice cliente), nome, acqtot (importo totale degli acquisti fino a gennaio 2008), numacqtot (numero degli acquisti effettuati)
vendite con i campi codcli, iverig (importo dell'acquisto), data , luogo
ora mi trovo a dover aggiungere dei valori di sintesi, ma purtroppo non riesco a farlo con un update.
per inserire il valore di acqtot e numacqtot ho provato in diversi modi con l'update ma mi dice sempre che serve una query aggiornabile, ed alla fine sono costretto a creare una tabella identica con la stessa struttura, una tabella di appoggio dove inserire i valori di sintesi, e copiare ad esempio da clienti e appoggio i dati in clienti2 e poi rinominare...
esempio per inserire acqtot e numacqtot ho aggiunto i campi acqtot e numacqtot alla tabella clienti e creato un clienti2 vuota.
e quindi:
codice:
insert into clienti2 (codcli, acqtot, numacqtot)
select codcli, sum(iverig), count(*)
from vendite
group by codcli
con l'update non riesco a mettere dei riferimenti... cioè l'update ad ogni istanza va a sostituire un valore, ma non riesco a dirgli di mettere i valori di sintesi o riferiti ad altre tabelle...
mettiamo che io voglia mettere anche i campi acqmax e acqmin
ho provato diverse volte l'update in modi simili a questo:
codice:
update clienti c1
set acqmax = (select max(v.iverig)
from vendite v
where c1.codcli = v.codcli)
oppure creandomi una tabella di appoggio, e mettendoci i valori di codcli, acqmax e acqmin non riesco a fare l'update...
e quindi sono costretto a fare:
codice:
insert into clienti2 (codcli, acqtot, numacqtot, acqmax, acqmin)
select c.codcli, c.acqtot, c.numacqtot, a.acqmax, a.acqmin)
from clienti c, appoggio a
where c.codcli = a.codcli
anche se in questo caso, essendo max e min sempre funzioni applicate al group by codcli nella tabella vendite avrei potuto fare
codice:
insert into clienti2
select codcli, sum(iverig), count(*), max(iverig), min(iverig)
from vendite
group by codcli
ma le misure che dovrò inserire ora non sono solo risultati del group by codcli...
insomma non riesco ad esempio facendo un update di far inserire in un certo campo il valore associato ad un'altra variabile di un altra tabella referenziata, cioè esempio il valore di min(iverig) nella tabella appoggio, con il codcli = al codcli della riga che sta aggiornando l'update...
spero di essermi spiegato ma mi sa che ho fatto un po di confusione...