PDA

View Full Version : یه سوال درمورد دستورUpdate



iman_s52
سه شنبه 19 دی 1385, 12:05 عصر
میخوام بدونم آیا این کاربا یه دستور Update شدنیه یا نه
یه دستور Update که اگر یه شرط برقرار بود فیلد A رو Set کنه در غیر اینصورت فیلد B رو Set کنه.
‍case که نمیشه بذارم ؟

AminSobati
سه شنبه 19 دی 1385, 14:18 عصر
نه دوست عزیزم، با یک دستور Update این کار شدنی نیست.

iman_s52
سه شنبه 19 دی 1385, 18:08 عصر
کسی پیشنهادی مطلبی در این مورد به نظرش نمی رسه ؟؟

whitehat
سه شنبه 19 دی 1385, 20:27 عصر
شما می توانید با دستورات TSQL و ساختن Query خود به مقصود خود برسید.


Declare str varchar(50)
str= 'update YourTable set'
if (Your_Condition)
Set str=str+' A=Your_value'
else
Set str=str+' B=Your_value'
....
حال کوئری بدست آمده را می توانید اجرا کنید

iman_s52
سه شنبه 19 دی 1385, 20:29 عصر
خسته نباشید!!!
من شرایطم رو در سطح Database میخوام کنترل کنم.

whitehat
سه شنبه 19 دی 1385, 20:31 عصر
منظور شما چیه ؟
شما این دستورات را می توانید در یک UF یا SP قرار دهید!

iman_s52
سه شنبه 19 دی 1385, 20:46 عصر
تو دستورم چون از چند تا Join استفاده کردم نمی تونم جدا شرط ها رو بررسی کنم

whitehat
سه شنبه 19 دی 1385, 20:49 عصر
لطفا کوئری خود را اینجا بنویسید

odiseh
چهارشنبه 20 دی 1385, 08:15 صبح
سلام
امیدوارم که منظور شما رو درست متوجه شده باشم اما این یه مثال که برای update از Case استفاده شده


update t
set meghdar = case when code<= 1 then id-9 when code>1 then id+8 end

whitehat
چهارشنبه 20 دی 1385, 11:40 صبح
منظور این نیست.ایشون می خواهند دو فیلد متفاوت را بر اساس شرطی Update کنند.

عفت بزرگه
چهارشنبه 20 دی 1385, 12:10 عصر
مجبوری بیاریش توی سطح برنامه

iman_s52
چهارشنبه 20 دی 1385, 18:11 عصر
بله.
یکی از دلیلاش اینکه چون من یه Select از جدول موقت دارم و بقیه فیلد هام تویه یه دیتا بیس دیگه است .
از SP نمی تونم استفاده کنم.

SabaSabouhi
چهارشنبه 20 دی 1385, 23:06 عصر
با سلام
پاسخ شما مثبت هست، براى این کار راهى وجود داره به این شکل:




UPDATE MyTable
SET A = CASE WHEN @MyCondition = 1 THEN @New_A_Value ELSE A END
, B = CASE THEN @MyCondition = 2 THEN @New_B_Value ELSE B END



صبا صبوحى