|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: May 2004
Città: Como (PDN)
Messaggi: 428
|
[SQL2000] Problema strano con filtro di una query
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?
__________________
Qualcuno qui dentro ritiene di essere l'illuminato, di avere la saggezza e che gli altri siano un branco di poveri idioti. Per questo se non è in grado di argomentare seriamente delle risposte, se non la pensi come lui o se provoca e gli rispondi fugge dal thread e ti mette in ignore list |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Poi in realta' per capire meglio dovresti circoscrivere un po' meglio il problema, ovvero dire - quale e' la tabella locale, come si chiama - quale e' la tabella remota, come si chiama, - se stai facendo insert in locale leggendo da remoto o insert in remoto leggendo da locale - le query per l'update e la query per l'insert
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. Ultima modifica di gugoXX : 17-10-2009 alle 11:40. |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: May 2004
Città: Como (PDN)
Messaggi: 428
|
Ho risolto con il NOT EXISTS, se a qualcuno può servire è:
SELECT ID, Comune... FROM TabellaOrigine WHERE (NOT EXISTS (SELECT ID FROM TabellaOrigine WHERE (IdOrig=TabellaDest.ID)))
__________________
Qualcuno qui dentro ritiene di essere l'illuminato, di avere la saggezza e che gli altri siano un branco di poveri idioti. Per questo se non è in grado di argomentare seriamente delle risposte, se non la pensi come lui o se provoca e gli rispondi fugge dal thread e ti mette in ignore list |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:32.