Aggiorna query da una query di ricerca
-
05-07-2019 - |
Domanda
Ho un foglio di calcolo che sto convertendo in un DB di Access. Ho una colonna di nomi di clienti digitati che voglio sostituire con il numero di cliente appropriato dal nostro sistema di contabilità.
Ho creato una tabella con le informazioni del cliente e una query che mostra quale ID deve essere inserito nei dati di origine. Quello che sto cercando è:
UPDATE tblStarting_Data
SET CustomerID=x
WHERE TEMPCustomer=y
Da dove provengono X e Y da qryIDPerCustomer.
Posso usare un loop? Come faccio a fare riferimento a un'altra query?
Soluzione
Un'altra possibilità in MS Access (nomi degli oggetti presi in prestito dalla risposta Tomalak):
UPDATE tblStarting_Data, qryIDPerCustomer
SET tblStarting_Data.CustomerID=qryIDPerCustomer.CustomerID
WHERE tblStarting_Data.TEMPCustomer=qryIDPerCustomer.CustomerName
Altri suggerimenti
Penso che un JOIN ti aiuterà:
UPDATE
tblStarting_Data AS sd
INNER JOIN qryIDPerCustomer AS qc ON sd.TEMPCustomer = qc.CustomerName
SET
sd.CustomerID = qc.CustomerID;
Questo può essere espresso anche come sottoquery correlata (sebbene sia preferibile la sintassi del join):
UPDATE
tblStarting_Data
SET
CustomerID = (
SELECT CustomerID
FROM qryIDPerCustomer
WHERE CustomerName = tblStarting_Data.TEMPCustomer
)
Non è necessario un ciclo, entrambe le istruzioni aggiorneranno tutti i record in tblStarting_Data
in un solo passaggio.