Leif Neland skrev:
> Nu er det tilfældigt at id2 = id1+1. Men mener du det belaster
> at joine på at p.id=123 and x.id=456?
Jeg ved det ikke med sikkerhed - databasen kan muligvis optimere
forespørgslen så det ikke er noget problem. Men du kan evt. teste
med en queryplan for de forskellige modeller.
>> Et alternativ er at gemme værdierne i en tablevariabel.
> Jeg vil gerne slippe for at oprette en hel bunke variable
Du kan nøjes med én - og ingen form for escape (forudsat at du
arbejder i MSSQL 2000 eller nyere):
/* ************************************* */
DECLARE @tblTmp TABLE(
id int,
beskrivelse nvarchar(200),
billede varchar(100),
pris float
)
INSERT INTO @tblTmp (id, beskrivelse, billede, pris)
SELECT 3, beskrivelse, billede, pris
FROM produkter
WHERE id = 2
UPDATE p
SET beskrivelse = t.beskrivelse,
billede = t.billede,
pris = t.pris
FROM produkter p
INNER JOIN @tblTmp t
ON p.id = t.id
/* ************************************* */
Med et par ekstra variable til id-værdierne bliver det lidt lettere
at se hvad der foregår (og der er stadig ikke brug for at escape):
/* ************************************* */
DECLARE @kildeID int
DECLARE @maalID int
SET @kildeID = 2
SET @maalID = 3
DECLARE @tblTmp TABLE(
id int,
beskrivelse nvarchar(200),
billede varchar(100),
pris float
)
INSERT INTO @tblTmp (id, beskrivelse, billede, pris)
SELECT @maalID, beskrivelse, billede, pris
FROM produkter
WHERE id = @kildeID
UPDATE p
SET beskrivelse = t.beskrivelse,
billede = t.billede,
pris = t.pris
FROM produkter p
INNER JOIN @tblTmp t
ON p.id = t.id
/* ************************************* */
Hvis det er noget man har brug for flere gange, kan det hele puttes
i en lagret procedure (med de to id-variable som parametre)
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på
http://usenet.dk/netikette/citatteknik.html