PDA

View Full Version : تغییر دسته جمعی دیتاهای یک جدول



xrezax
یک شنبه 27 اردیبهشت 1394, 14:15 عصر
من یک بانک دارم که یکی از فیلدهای آن gheymat هست که اجناس اونجا قیمت می خورن (اجناس بالای 20000 تا هستن)

حالا من میخوام یه دستوری بنویسم که مثلا اجناسی که قیمت آنها بین 1000 تومان تا 100000 تومان هست قیمتشون هفتصد تومن کم بشه و
اجناسی که قیمت آنها بین 200000 تومان تا 1000000 تومان هست قیمتشون ده هزار تومن کم بشه. و نوشته بشن.
اونایی هم که صفر هستند دست نخورده بمون

SabaSabouhi
یک شنبه 27 اردیبهشت 1394, 16:07 عصر
من یک بانک دارم که یکی از فیلدهای آن gheymat هست که اجناس اونجا قیمت می خورن (اجناس بالای 20000 تا هستن)

حالا من میخوام یه دستوری بنویسم که مثلا اجناسی که قیمت آنها بین 1000 تومان تا 100000 تومان هست قیمتشون هفتصد تومن کم بشه و
اجناسی که قیمت آنها بین 200000 تومان تا 1000000 تومان هست قیمتشون ده هزار تومن کم بشه. و نوشته بشن.
اونایی هم که صفر هستند دست نخورده بمون

سلام
چند تا اشکال تو پست شما دیده می‌شه.
1. اونی که مطرح کردی، بانک نیست، جدول هست.
2. فیلد قیمت معمولاً باید تو یه جدول دیگه قرار بگیره.
3. شرطی که مطرح کردی تمام دامنه‌ی تعریف رو نمی‌پوشونه. مثلاً مشخص نکردی اگه 500 تومان یا 150000 بود چی می‌شه؟
4. اسم جدول‌ها، ستون‌ها و غیره رو PINGLISH نگذار، شاید یه روزی یه نفر دیگه خواست این کد رو
بخونه، رفع اشکال کنه یا تکمیل کنه. شما به عنوان یه برنامه‌نویس، به احتمال خیلی زیاد یا مهندس هستی و
یا دانش‌جو. استخراج نام مناسب برای اشیاء از توی Translate.Google.Com کار خیلی راحتیه.

و اما پاسخ شما:


UPDATE MyTable
SET Price = CASE
WHEN Price BETWEEN 1000 AND 99999 THEN Price = Price - 700
WHEN Price BETWEEN 200000 AND 999999 THEN Price = Price - 10000
END
WHERE Price BETWEEN 1000 AND 99999
OR Price BETWEEN 200000 AND 999999

اگه تو تعریف مساله دامنه تعریف رو کاملاً پوشانده بودی، اون WHERE آخر لازم نبود.
چون Between شامل هر دو مرز می‌شه و من گمان کردم که منظورت از بین 1000 تا 100000 این بود که
شامل 1000 باشه، اما از 100000 کمتر باشه، تو نوشتن script از 99999 استفاده کردم.

صبا صبوحی

xrezax
سه شنبه 05 خرداد 1394, 16:48 عصر
حالا اگر بخوام تمام رقم های Price بصورت دسته جمعی 20% قیمتشون کم بشه چیکار کنم ؟؟؟
رقم های صفر نیز داریم. که دست نخورده باید بمونن ؟؟

SabaSabouhi
چهارشنبه 06 خرداد 1394, 11:54 صبح
حالا اگر بخوام تمام رقم های Price بصورت دسته جمعی 20% قیمتشون کم بشه چیکار کنم ؟؟؟
رقم های صفر نیز داریم. که دست نخورده باید بمونن ؟؟

سلام
این که دیگه خیلی آسونه


UPDATE MyTable
SET Price = Price * 80 / 100

صفر هم صفر می‌مونه

صبا صبوحی

xrezax
سه شنبه 11 آبان 1395, 20:03 عصر
حالا اگر بخوام تمام رقم های Price بصورت دسته جمعی 20% به قیمتشون اضافه بشه چیکار کنم ؟؟؟
رقم های صفر نیز داریم. که دست نخورده باید بمونن ؟؟

pezhvakco
چهارشنبه 12 آبان 1395, 09:05 صبح
UpDate
[dbo].[Table01]
Set [ColName] = ([ColName] * 120) /100