ورود

View Full Version : جابه جایی اطلاعات یک فیلد دو رکورد



kitcat_m18
سه شنبه 20 آبان 1393, 18:48 عصر
سلام
من نمی دونم سوالم رو جای درستی مطرح کردم یا نه
من می خوام اطلاعات یک فیلد 2 رکورد رو با هم جا به جا کنم

دو رکورد من اینها هستند
ID|Nam|Sen
1|Mohsen|25
2|Hassan|23

حالا می خوام سن این دو نفر رو با هم عوض کنم
می دونم چجوری باید دستور Update رو بنویسم که بدون خطا انجام بشه :متفکر:

pezhvakco
سه شنبه 20 آبان 1393, 19:58 عصر
یه راه راحت =
درون یک SP =>

Declare @TmpYears int;
Declare @IdRow01 Int, @IdRow02 Int;

Select @IdRow01 = 1, @IdRow02 = 2;

Select @TmpYears = Sen
From [dbo].[Table01]
Where id = @IdRow01;

Begin Tran
UpDate [dbo].[Table01]
Set Sen = (Select Sen
From [dbo].[Table01] AS SubTb
Where SubTb.id = @IdRow02)
Where id = @IdRow01;

UpDate [dbo].[Table01]
Set Sen = @TmpYears
Where id = @IdRow02;

If (@@ERROR > 0)
Begin
RollBack
Return 1
End;

Commit Tran;

kitcat_m18
سه شنبه 20 آبان 1393, 21:36 عصر
آقا ممنون
من دنبال اینم که با یه کوئری اینکارو کنم
میشه با کوئری هم انجامش داد؟

kitcat_m18
سه شنبه 20 آبان 1393, 21:37 عصر
آقا ممنون
من دنبال اینم که با یه کوئری انجامش بدم
میشه با یه کوئری اینکارو انجام داد؟

Salah Sanjabian
سه شنبه 20 آبان 1393, 23:36 عصر
سلام به این صورت میتونی کار کنی

UPDATE Test1
SET sen =
(
SELECT SUM (sen)
FROM dbo.Test1
WHERE Id IN (1,2)
) - sen
WHERE Id IN (1,2)

kitcat_m18
چهارشنبه 21 آبان 1393, 10:14 صبح
فدایی داری به مولا
هر جا رو گشتم جواب رو پیدا نمی کردم
واقعا خوب عمل می کنه
یه برنامه ای رو دارم پشتیبانی می کنم که توش نیازه رکورد های یه جدول جا به جا بشن
برداشته بودن کلی کد زده بودن واسه اون قسمت
اما من مطمئن بودم میشه با یه دستور SQL اینکارو بی دردسر انجام داد
بازم ممنون

Salah Sanjabian
چهارشنبه 21 آبان 1393, 23:12 عصر
الیته این روش به شرطی کار میکنه که حتما بر اساس فیلدی Unique بودن رکورد ها رو رعایت کرده باشین