Ti servono 2 query, una per l'aggiornamento, l'altra per l'accodamento dei record mancanti.
Negli esempi sotto io ho usato un
campo chiave (PRIMARY KEY) ma è ovvio che tu dovrai impostare la relazione tra le due tabelle utilizzando i campi che permettano di identificare univocamente lo stesso record in entrambe.
Potrebbe essere Cognome+Nome, oppure un ID, oppure un Codice univoco, ecc...
Questo lo sai solo tu, che conosci la struttura delle tue tabelle.
AGGIORNAMENTO
Devi creare un JOIN sui
campi chiave che identificano univocamente lo stesso record nelle due tabelle, specificando per ogni singolo campo nella tabella 1 (T1) il campo da cui prelevare il valore dalla tabella 2 (T2):
UPDATE T1 INNER JOIN T2 ON T1.CampoChiave = T2.CampoChiave
SET T1.campo1 = T2.CampoX
, T1.campo2 = T2.CampoY
Ho scoperto che se si esegue la query da VB6 si verifica un errore di sintassi.
Per risolvere bisogna indicare le parentesi quadre nel secondo campo, così :
SET T1.campo1 = [T2].[CampoX]
Non chiedetemi perché.
ACCODAMENTO
La sintassi è:
INSERT INTO T1 SELECT T2.Campo1, T2.Campo2, ...
FROM T2 WHERE T2.CampoChiave NOT IN (SELECT T1.CampoChiave FROM T1)
Un esempio pratico:
supponiamo di avere due tabelle clienti di nome: Clienti e Clienti2
Ora vogliamo aggiungere i clienti presenti in Clienti che non esistono in Clienti2, ma oltre a questo in Clienti2 devo anche valorizzare il campo RagioneSociale (Cognome + Nome) che non esiste in Clienti per devo usare un ALIAS (così puoi capire come copiare i valori da campi con nomi diversi).
INSERT INTO Clienti2
SELECT Clienti.Cognome, Clienti.Nome, (Clienti.Cognome+' '+Clienti.Nome) AS RagioneSociale
FROM Clienti
WHERE Clienti.IDCliente NOT IN (SELECT Clienti2.IDCliente FROM Clienti2)
S.E. &. O.