Bizkaiko
16-10-2009, 11:22
Ciao,sto lavorando su delle query su SQL2000, ma mi succede una cosa strana:
io ho 2 tabelle uguali (COMUNI) in 2 database distinti, e devo copiare i record di una tabella nell'altra ovviamente controllando che non si creino duplicati...
La tabella è strutturata con ID, NomeComune, tutti-gli-altri-dati, ed il confronto lo posso fare solo sul campo NomeComune.
Nella tabella di destinazione ho aggiunto un campo IdOrig: faccio partire una prima query che mi trova i campi corrispondenti, e nella tabella di destinazione mi aggiorna questo campo IdOrig mettendo il valore dell'ID che c'è nella tabella di partenza.
La seconda query è quella di inserimento delle righe della tabella di partenza il cui ID non compare in questa colonna IDOrig.
La cosa strana è questa:
TabellaDiPartenza [ID - NomeComune]:
1 - Milano
2 - Roma
Tabella di destinazione [ID - IdOrig - NomeComune]::
1 - NULL - Milano
quando faccio partire la prima query mi diventa correttamente
1 - 1 - Milano
MA, quando provo a lanciare la query:
SELECT ID, NomeComune FROM DATABASE1.dbo.COMUNI WHERE (ID NOT IN (SELECT IdOrig FROM A_COMUNI AS A_COMUNI_1))
non mi trova nulla, mentre se metto il filtro inverso, ovvero:
SELECT ID, NomeComune FROM DATABASE1.dbo.COMUNI WHERE (ID IN (SELECT IdOrig FROM A_COMUNI AS A_COMUNI_1))
mi restituisce correttamente la riga corrispondente a Milano
(e ovviamente se tolgo completamente il filtro mi vede tutte e 2 le righe del database di partenza...)
Cosa può essere?
io ho 2 tabelle uguali (COMUNI) in 2 database distinti, e devo copiare i record di una tabella nell'altra ovviamente controllando che non si creino duplicati...
La tabella è strutturata con ID, NomeComune, tutti-gli-altri-dati, ed il confronto lo posso fare solo sul campo NomeComune.
Nella tabella di destinazione ho aggiunto un campo IdOrig: faccio partire una prima query che mi trova i campi corrispondenti, e nella tabella di destinazione mi aggiorna questo campo IdOrig mettendo il valore dell'ID che c'è nella tabella di partenza.
La seconda query è quella di inserimento delle righe della tabella di partenza il cui ID non compare in questa colonna IDOrig.
La cosa strana è questa:
TabellaDiPartenza [ID - NomeComune]:
1 - Milano
2 - Roma
Tabella di destinazione [ID - IdOrig - NomeComune]::
1 - NULL - Milano
quando faccio partire la prima query mi diventa correttamente
1 - 1 - Milano
MA, quando provo a lanciare la query:
SELECT ID, NomeComune FROM DATABASE1.dbo.COMUNI WHERE (ID NOT IN (SELECT IdOrig FROM A_COMUNI AS A_COMUNI_1))
non mi trova nulla, mentre se metto il filtro inverso, ovvero:
SELECT ID, NomeComune FROM DATABASE1.dbo.COMUNI WHERE (ID IN (SELECT IdOrig FROM A_COMUNI AS A_COMUNI_1))
mi restituisce correttamente la riga corrispondente a Milano
(e ovviamente se tolgo completamente il filtro mi vede tutte e 2 le righe del database di partenza...)
Cosa può essere?