salve,
anflam ha scritto:
Salve a tutti.
Vi spiego il mio problema !!
Tramite select distinct ottengo N record composti da 2 campi : Matricola
Codice
ora vorrei inserire questi record in una altra tabella (che chiamero' app) solo se pero' il record non è già presente.
come posso fare ?
Le due tabelle hanno solo questi due campi.
Sono tutti e due interi e non vi è nessuna chiave identity.
spero di essere stato chiaro.
grazie.
puoi ad esempio utilizzare l'operatore (NOT) EXISTS come segue
SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE test (
MAtricola int NOT NULL ,
Codice int NOT NULL
);
CREATE TABLE test2 (
MAtricola int NOT NULL ,
Codice int NOT NULL
);
INSERT INTO test VALUES ( 1 , 1 );
INSERT INTO test VALUES ( 1 , 1 );
INSERT INTO test VALUES ( 2 , 1 );
INSERT INTO test VALUES ( 2 , 1 );
INSERT INTO test VALUES ( 2 , 2 );
INSERT INTO test VALUES ( 2 , 2 );
INSERT INTO test VALUES ( 3 , 1 );
INSERT INTO test VALUES ( 3 , 1 );
INSERT INTO test VALUES ( 3 , 1 );
INSERT INTO test VALUES ( 3 , 2 );
INSERT INTO test VALUES ( 3 , 2 );
INSERT INTO test VALUES ( 3 , 2 );
INSERT INTO test VALUES ( 3 , 3 );
INSERT INTO test VALUES ( 3 , 3 );
INSERT INTO test VALUES ( 3 , 3 );
GO
SELECT DISTINCT Matricola, Codice FROM test;
INSERT INTO test2 VALUES ( 1 , 1 );
INSERT INTO test2 VALUES ( 2 , 2 );
INSERT INTO test2 VALUES ( 3 , 3 );
GO
PRINT 'selezione';
SELECT DISTINCT t.Matricola, t.Codice
FROM test t
WHERE NOT EXISTS(
SELECT * FROM test2
WHERE test2.Matricola = t.Matricola
AND test2.Codice = t.Codice);
PRINT '';
PRINT 'inserimento';
INSERT INTO test2
SELECT DISTINCT t.Matricola, t.Codice
FROM test t
WHERE NOT EXISTS(
SELECT * FROM test2
WHERE test2.Matricola = t.Matricola
AND test2.Codice = t.Codice);
SELECT Matricola, Codice FROM test2;
/* solo SQL 2005
PRINT 'selezione';
SELECT DISTINCT t.Matricola, t.Codice
FROM test t
EXCEPT
SELECT t2.Matricola, t2.Codice
FROM test2 t2;
PRINT '';
PRINT 'inserimento';
INSERT INTO test2
SELECT DISTINCT t.Matricola, t.Codice
FROM test t
EXCEPT
SELECT t2.Matricola, t2.Codice
FROM test2 t2;
SELECT Matricola, Codice FROM test2;
*/
GO
DROP TABLE test, test2;
--<---------------
selezione
Matricola Codice
----------- -----------
2 1
3 1
3 2
inserimento
Matricola Codice
----------- -----------
1 1
2 2
3 3
2 1
3 1
3 2
saluti