Importare solo i campi vuoti da altra tabella

venerdì 28 settembre 2012 - 00.28
Tag Elenco Tags  Windows 7  |  Access (.mdb)  |  Office 2007

FaberXP Profilo | Newbie

Salve a tutti,
volevo sottoporvi un quesito a cui non trovo soluzione:
Ho due tabelle Access 2007 (Source e Dest) con i campi comuni, nella Dest alcuni record non sono completi (hanno un campo bianco), nella Source i record, se presenti , sono completi.
Vorrei ottenere una tabella in cui ho i dati della Dest per i record completi e quelli della Source (se esistenti) per i soli record che erano incompleti in Dest.
Faccio un esempio (spero che la formattazione mi auti..)
Dest Source Risultato voluto A 1 A 1 A 1 B B 2 B 2 C 3 C 5 C 3 D D
Sapete indicarmi una strada, magari con una SQL per Access, per risolvere il problema?
Grazie in anticipo!

alx_81 Profilo | Guru

>Salve a tutti,
ciao

>volevo sottoporvi un quesito a cui non trovo soluzione:
>Ho due tabelle Access 2007 (Source e Dest) con i campi comuni,
>nella Dest alcuni record non sono completi (hanno un campo bianco),
>nella Source i record, se presenti , sono completi.
>Vorrei ottenere una tabella in cui ho i dati della Dest per i
>record completi e quelli della Source (se esistenti) per i soli
>record che erano incompleti in Dest.
>Sapete indicarmi una strada, magari con una SQL per Access, per
>risolvere il problema?
personalmente userei una LEFT JOIN con una INSERT ed una UPDATE JOIN per risolvere il problema.
Osserva il seguente esempio:

USE tempdb; GO CREATE TABLE #tempSource (val1 char(1), val2 int) CREATE TABLE #tempDest (val1 char(1), val2 int) INSERT INTO #tempSource ( val1, val2 ) VALUES ( 'A', 1 ) INSERT INTO #tempSource ( val1, val2 ) VALUES ( 'B', 2 ) INSERT INTO #tempSource ( val1, val2 ) VALUES ( 'C', 5 ) INSERT INTO #tempDest ( val1, val2 ) VALUES ( 'A', 1 ) INSERT INTO #tempDest ( val1, val2 ) VALUES ( 'B', NULL ) INSERT INTO #tempDest ( val1, val2 ) VALUES ( 'C', 5 ) INSERT INTO #tempDest ( val1, val2 ) VALUES ( 'D', NULL ) SELECT * FROM #tempSource TS SELECT * FROM #tempDest TD -- prima aggiungo i dati mancanti INSERT INTO #tempDest ( val1, val2 ) SELECT TS.val1, TS.val2 FROM #tempSource TS LEFT JOIN #tempDest TD ON TS.val1 = TD.val1 WHERE TD.val1 IS NULL -- poi aggiorno i dati che combaciano UPDATE #tempDest SET val2 = TS.val2 FROM #tempSource TS JOIN #tempDest TD ON TS.val1 = TD.val1 SELECT * FROM #tempDest; DROP TABLE #tempDest; DROP TABLE #tempSource;

l'esempio è SQL Server, ma a te dovrebbero bastare le due operazioni di update e insert.

>Grazie in anticipo!
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

FaberXP Profilo | Newbie

Grazie alla strada indicatami da Alx_81 sono riuscito a creare la query desiderata!
Posto l'SQL per Access 2007 per chi dovesse aprodare qui col mio stesso problema
UPDATE tempDest INNER JOIN tempSource ON tempDest.val1 = tempSource.val1 SET tempDest.val2=tempSource.val2 WHERE (((tempDest.val2) Is Null));

per i Moderators: stò cercando di marcare il thread come risolto ma non capisco come si fa..
Faber

alx_81 Profilo | Guru

>Grazie alla strada indicatami da Alx_81 sono riuscito a creare
>la query desiderata!
Ottimo!

>per i Moderators: stò cercando di marcare il thread come risolto
>ma non capisco come si fa..
eheh.. puoi dire tranquillamente a me
dovresti avere un tasto "accetta" verde, in alto a destra, sulla mia risposta.
Lo vedi?

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
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 !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5