Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
[SQL SERVER 2005] - Importare dati su una tabella
giovedì 12 novembre 2009 - 10.58
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
symonx80
Profilo
| Junior Member
67
messaggi | Data Invio:
gio 12 nov 2009 - 10:58
Ho dubbi su come creare una query per portare un insieme di dati da una tabella ad un'altra con la stessa struttura, evitando che non si violi il vincolo di pk
Supponiamo di avere la tabella DESTINAZIONE e la tabella DATI, entrambe con questa struttura : ID,SEDE,INDIRIZZO,TEL
e come pk la coppia ID,SEDE,
Ho pensato ad una query del genere
INSERT INTO DESTINAZIONE
SELECT * FROM DATI
WHERE ID NOT IN(SELECT ID FROM DESTINAZIONE) AND
SEDE NOT IN(SELECT SEDE FROM DESTINAZIONE)
?
Sinceramente a me sembra scorretto perchè questo non implica che l'id e la sede siano sullo stesso record durante il controllo,o sbaglio?
Qualcuno ha buoni cosigli?
speedx
Profilo
| Junior Member
111
messaggi | Data Invio:
gio 12 nov 2009 - 12:10
Ciao,
dunque... se la tabella non l'hai già ma le devi ancora creare, il modo + semplice è fare
SELECT *
INTO nome tabella destinazione
FROM tabella origine
Se la tabella l'hai già creata o cmq devi accodare i record devi utilizzare un altro sistema....
OK la INSERT INTO che hai scritto, ma devi disabilitare l'auto inserimento dell' ID al fine di preservare il precendente.
SET IDENTITY_INSERT to ON.
INSERT INTO.....
SET IDENTITY_INSERT to OFF.
da qui in poi la chiave ritorna ad essere autoincrement
//// Marcello C.
symonx80
Profilo
| Junior Member
67
messaggi | Data Invio:
gio 12 nov 2009 - 12:49
La tabella di destizione ha già dei dati al suo interno e la chiave non è autoincrementata.
Ma la query di inserimento è corretta a tuo parere?
speedx
Profilo
| Junior Member
111
messaggi | Data Invio:
gio 12 nov 2009 - 17:12
Be allora la query va modificata...
INSERT INTO DESTINAZIONE
(
elenco campi tabella
)
SELECT
elenco campi da leggere
FROM DATI
LEFT OUTER JOIN DESTINAZIONE
ON DATI.ID = DESTINAZIONE.ID
AND DATI.SEDE = DESTINAZIONE.SEDE
WHERE
DESTINAZIONE.ID IS NULL
AND DESTINAZIONE.SEDE IS NULL
prova un po'
//// Marcello C.
Torna su
Stanze Forum
Elenco Threads
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 !