Faccio un esempio così sarà più facile spiegarmi; questa è la situazione
DB1
Id1_AutoIncremental |
PIVA1_UniqueIndex |
NomeAzienda1 |
100 |
012 |
Azienda1 |
101 |
013 |
Azienda2 |
103 |
014 |
Azienda3 |
DB2
Id2_AutoIncremental |
PIVA2_UniqueIndex |
NomeAzienda2 |
10 |
013 |
Azienda2 |
eseguo la query ed ottengo:
DB3
SuperId_AutoIncremental |
Id1_UniqueIndex |
Id2 |
PIVA |
1 |
100 |
null |
012 |
2 |
101 |
10 |
013 |
3 |
103 |
null |
014 |
---------------------------------------------------------------------------------------
Ora aggiungo un nuovo record nel DB2 ed ottengo:
DB1
Id1_AutoIncremental |
PIVA1_UniqueIndex |
NomeAzienda1 |
100 |
012 |
Azienda1 |
101 |
013 |
Azienda2 |
103 |
014 |
Azienda3 |
DB2
Id2_AutoIncremental |
PIVA2_UniqueIndex |
NomeAzienda2 |
10 |
013 |
Azienda2 |
11 |
014 |
Azienda3 |
Eseguo la query:
codice:
INSERT INTO DB3 ( Id1, PIVA1, id2, PIVA2 )
SELECT DB1.Id1, DB1.PIVA1, DB2.id2, DB2.PIVA2
FROM DB3
RIGHT JOIN ( DB1
LEFT JOIN DB2
ON DB1.PIVA1 = DB2.PIVA2 )
ON DB3.PIVA1 = DB1.PIVA1
WHERE ((DB3.Id1) Is Null)
ed ottengo la tabella non aggiornata:
DB3
SuperId_AutoIncremental |
Id1_UniqueIndex |
Id2 |
PIVA |
1 |
100 |
null |
012 |
2 |
101 |
10 |
013 |
3 |
103 |
null |
014 |
invece di:
DB3
SuperId_AutoIncremental |
Id1_UniqueIndex |
Id2 |
PIVA |
1 |
100 |
null |
012 |
2 |
101 |
10 |
013 |
3 |
103 |
11 |
014 |
Mentre, se eseguo una semplice select, il risultato è corretto, e mi associa l'ultimo record inserito:
codice:
SELECT DB1.Id1, DB1.PIVA1, DB2.id2, DB2.PIVA2
FROM DB1
LEFT JOIN DB2
ON DB1.PIVA1 = DB2.PIVA2