>Salve a tutti, sono nuovo iscritto e innanzitutto mi complimento
>con tutti coloro che hanno reso e renderanno sempre migliore
>questo splendido sito....
Ciao Mark,
Grazie a nome di tutti gli utenti di DNH e benvenuto!
>Ho due tabelle così composte:
>
>tabella a (id,nome,cognome) e contiene il seguente record: id=1,
>nome=mario, cognome=rossi
>tabella b (riferimento,id,nome,cognome)
>
>a questo punto, procedo nel fare una query di semplice inserimento
>record nel campo "riferimento" della tabella b e inserisco il
>numero es. "50"......e fin quì tutto ok....
Cosa rappresenta la colonna riferimento?
Qual è la Primary Key della tabella b?
>adesso vorrei creare una query che mi vada a copiare i record
>della tabella a (id,nome,cognome) nella tabella b (id,nome,cognome)
>quindi vorrei che la tabella "b" alla fine abbia come risultato
>il seguente:
>
>tabella b
>
>riferimento = 50
>id = 1
>nome = mario
>cognome = rossi
>
>
>In pratica il concetto è: inserisci "id=1", "nome=mario", "cognome=rossi"
>dalla tabella "a" alla tabella "b"......dove il campo "riferimento
>della tabella "b" è = 50
>ma è più semplice a dirsi che à farsi...
A parte il significato della colonna riferimento che mi sfugge, puoi ottenere il risultato che cerchi definendo una tabella derivata che restituisca la riga da aggiornare ed eseguire il comando di UPDATE su di essa.
Dato che utilizzi SQL Server 2005 ti mostrerò un esempio basato su una Common Table Expression (CTE):
USE tempdb;
CREATE TABLE dbo.a(
id int NOT NULL PRIMARY KEY,
nome varchar(10) NOT NULL,
cognome varchar(10) NOT NULL
);
CREATE TABLE dbo.b(
riferimento int NOT NULL,
id int NULL,
nome varchar(10) NULL,
cognome varchar(10) NULL
);
INSERT dbo.a VALUES(1, 'mario', 'rossi');
INSERT dbo.b(riferimento) VALUES(50);
INSERT dbo.b(riferimento) VALUES(60);
WITH CTE_GetRowToUpdate AS
(
SELECT id, nome, cognome
FROM dbo.b
WHERE riferimento = 50
)
UPDATE CTE_GetRowToUpdate
SET id = a.id,
nome = a.nome,
cognome = a.cognome
FROM dbo.a;
SELECT *
FROM dbo.b;
/* Output:
riferimento id nome cognome
----------- ----------- ---------- ----------
50 1 mario rossi
60 NULL NULL NULL
(2 row(s) affected)
*/
DROP TABLE dbo.a, dbo.b;
>Ringrazio anticipatamente coloro i quali mi aiuteranno
>nella risoluzione di questo difficile problema.
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org