نمایش نتایج 1 تا 25 از 25

نام تاپیک: مشکل در UpDate

  1. #1

    مشکل در UpDate

    من یه جدول با مقادیر زیر دارم:

    Field1 - Field2
    1 - 1
    2 - 2
    3 - 1
    4 - 1
    5 - 2
    6 - 2
    7 - 1
    البته این جدول اطلاعات بیشتری داره. Field2 همیشه از 1 شروع میشه تا بی نهایت
    من می خوام سطرهایی که Field1 اون برابر با 2 هست رو Delete کنم..
    جدول باید Update بشه.. و Field2 از 1 و2 و3 و ...

    راه حل شما چیه؟

  2. #2
    کاربر دائمی آواتار sarvestan
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    سروستان
    پست
    162
    استفاده از trigger ها!

  3. #3
    اگه میشه بیشتر توضیح بدین.. ممنون میشم

  4. #4
    VIP
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    www
    سن
    40
    پست
    1,247
    نقل قول نوشته شده توسط Mahdi_20
    من می خوام سطرهایی که Field1 اون برابر با 2 هست رو Delete کنم..
    راه حل شما چیه؟
    DELETE Tb_Name WHERE Field1=2

    ولی اگر منظورت از 2 فیلد 2 بود:

    DELETE Tb_Name WHERE Field1=Field2

  5. #5
    دستتون درد نکنه..
    ولی من تو Update مشکل دارم..
    شما زحمت کشیدی حذفشون کردی.. تو Update کردن Field2 (از 1 تا ...)
    چه راه حلی پیش نهاد می کنین

  6. #6
    VIP
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    www
    سن
    40
    پست
    1,247
    متوجه سئوالتون نشدم....ولی اینم دستور Update :

    UPDATE MyTb SET Field1=Value1,Field2=Value2

    Field که فیلد و Value مقداری که باید تو فیلد بشینه.

    حالا اگه خواستی میتونی این Value را با یک متغییر به کوئری پاس بدی.

  7. #7
    آقا جان من شکل دستور رو بلدم..
    من دارم دنبال یه راه حل برای مشکلم میگردم..
    شما اصلا صورت مسئله رو خوندی؟

  8. #8
    VIP
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    www
    سن
    40
    پست
    1,247
    لطفا شما هم پست ها را خوب بخونید

    نقل قول نوشته شده توسط majid325
    متوجه سئوالتون نشدم.....
    اگه نمیگی "آقا جان من شکل دستور رو بلدم" !

    UPDATE MyTb SET Field1=' ',Field2=' ' WHERE Field1=2

    اگه اینم نبود که سئوالتو خیلی بد پرسیدی!

  9. #9
    لطفا بعد از اینکه اونو خوندین یه ذره روش فکر کنید..
    من او سطر هایی از Feild1 رو که می خوام حذف میکنم..طبیعتا ستون Field2 از 1 تا ... مرتب نیست..منظورم اینه
    1,2,3,4,5,6,7,8,9,10,...
    این شکل بهم میریزه یعنی میشه
    1,3,4,7,9,11,13,...
    چطوری می تونم این ستون را با یه دستور Update از 1 تا ... مرتب کنم

  10. #10
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629
    با سلام
    این پرسش چه ربطى به این تالار داره؟ بهتره پرسش در جاى مناسب مطرح بشه.

    اما یک راه حل:
    از حلقه استفاده کنید.

    1. کوچکترین سطر را که field1 آن برابر 2 است را پیدا کنید.
    2. اگر پیدا نشد از حلقه خارج شوید.
    3. مقدار field2 آن را ذخیره کنید.
    4. آن سطر را حذف کنید.
    5. تمام رکوردهاى جدول را که field2 آن از مقدار ذخیره بیشتر است را به شکل زیر update کنید:

    Update <Table> set field2 = field2 - 1 where field2> @myField2
    6. حلقه را از ابتدا تکرار کنید.

    البته توجه داشته باشید که استفاده از حلقه اصولاً روش خوبى نیست و بسیار هم کند است، اما مشکل شما را حل مى‌کند.

    صبا صبوحى

  11. #11
    البته که مشکل حل نمیشه...
    عزیزان یه تست کوچیک تو یه کاغذ بزنن .. میبینید که به این راحتی هم نیست.
    البته , من می خوام با یه دستور این کار رو انجام بدم.
    --------------------
    آخه ممکنه بعضی وقتها 2,3,4 و ... از Field2 کم بشه
    آخرین ویرایش به وسیله Mahdi_20 : یک شنبه 21 آبان 1385 در 14:35 عصر دلیل: این پست به دلیل تکراری بودن بطور خودکار ادغام شده است.

  12. #12
    VIP
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    www
    سن
    40
    پست
    1,247
    همان طور که یکی از دوستان اشاره کردن شما باید از تریگیر استفاده بکنی ؟

  13. #13
    منم خواهش کردم در موردش توضیح بدن..

  14. #14
    کاربر دائمی آواتار sarvestan
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    سروستان
    پست
    162
    :: در سایت اگر جستجو می کردید خیلی سریع تر به جواب می رسیدید ::
    اینجا رو ببینید برای تریگرها
    کافی بود تنها کلمه ای رو که بهتون گفتم رو در سایت جستجو کنید" triger " تا معطل نشوید

    برای اطلاعات بیشتر جستجو را در سایت پیشنهاد می کنم!
    تریگر - trigger

  15. #15
    خوب حالا می تونم بگم که triger هم به دردم نخورد..
    آخه تا جایی که من فهمیدم با انجام یک فعالیت روی Table می تونیم یه کار انجام بدیم..مثالا بعد از حذف فلان کار انجام بشه..
    ولی این مشکل منو حل نمیکنه..من فقط یه دستور Update میخوام بنویسم که ستون field2 من رو از 1 تا ... پر کنه.

  16. #16
    کاربر دائمی آواتار sarvestan
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    سروستان
    پست
    162
    خب یک کار راحتی که می تونید بکنید اینه که در تریگر بعد از update این رکورد چندم در بانکتونه و فقط شماره همون رکوردتون رو در فیلد مربوطه بنویسید!


    یا استفاده از یک متغیر در یک stroeprocedure و مقدار دادن هر لحظه اون متغیر در داخل حلقه! ( یک کمی هم به cursor نیاز داری )

  17. #17
    هاااااااااااااااااااااااا ااااا ایییییی Cursor چیه؟

  18. #18
    کاربر دائمی آواتار sarvestan
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    سروستان
    پست
    162
    Cursor یا کرسر را در سایت جستجو کنید

  19. #19
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629
    نقل قول نوشته شده توسط Mahdi_20
    البته که مشکل حل نمیشه...
    عزیزان یه تست کوچیک تو یه کاغذ بزنن .. میبینید که به این راحتی هم نیست.
    البته , من می خوام با یه دستور این کار رو انجام بدم.
    با سلام
    مطمئن باش که مشکلت حل مى‌شه. امتحان کن و نتیجه رو ببین.
    این که مى‌خواهى با یک دستور باشه کارى نداره. کافیه براى این کار یک Stored Procedure بسازى و این کارها رو اون تو انجام بدى.

    راستى چون چند عمل رو دارى به صورت پیاپى انجام مى‌دى باز و بسته کردن Transaction یادت نره.

    صبا صبوحى

  20. #20
    نقل قول نوشته شده توسط SabaSabouhi
    Update <Table> set field2 = field2 - 1 where field2> @myField2
    منظور من اینه بود که با این دستور.. مشکل حل نمیشه
    ولی فکر کنم با همون Cursorها بشه یه کاری کرد.

  21. #21
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629
    نقل قول نوشته شده توسط Mahdi_20
    منظور من اینه بود که با این دستور.. مشکل حل نمیشه
    ولی فکر کنم با همون Cursorها بشه یه کاری کرد.
    با سلام
    دوست عزیز، حل مى‌شه. شما امتحان کن، اگه نشد با من.
    اون حلقه براى همین هست. وقتى شما اولین سطر رو براى حذف پیدا مى‌کنید تمام سطرهاى بعدى باید فقط یکى ازشون کم بشه. اگه سطر دیگرى براى حذف پیدا شد باز به همین ترتیب.
    من این کار رو قبلاً انجام داده‌ام و هیچ مشکلى نداره.

    حتماً امتحانش کن (به امتحانش که مى‌ارزه)

    صبا صبوحى

  22. #22
    عزیزم..ممنونم که به مسائل جوانان رسیدگی میکنین.. مثل اینکه شما متوجه نیستیااااااا...من دونه دونه از جدول حذف نمی کنم..
    با یه دستور دو سه هزار رکورد ممکنه حذف بشه..خاطر نشان کنم که، این رکورد ها به ترتیب حذف نمیشن..
    فرض کنید. در ابتدا سطرهام مرتب باشه و با یه دستور حذف خانه های 1 و 3و 4 و6و7 و9 پاک بشه..حالا باید از مقدار خانه شماره 2 یکی کم بشه (تا مقدارش 1 بشه) و از پنجمی 3 کم بشه (تا مقدارش 2 بشه) ..
    ولی شما تو این دستور یکی از تمام سطرها کم می کنی.

    بهترین راه حلی که به ذهنم میرسه اینه که تمام سطرهای این ستون رو دوباره مقدار دهی کنم..ولی دستورش رو نمی دونم.

    بازم متشکرم...اگه راه حل بهتری به ذهنتون میرسه..لطف کنید منو در جریان بزارین

  23. #23
    کاربر دائمی آواتار sarvestan
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    سروستان
    پست
    162
    این کدی که صبا پیشنهاد داده را در تریگر بعد از آپدیت after update بنویسی درست عمل میکند!(همون چیزی که میخواهی)
    ولی یه مشکل کوچولو داره!
    خیلی Process میبره!

  24. #24
    خوب دادا.. منم که گفتم اصلا خیلی کارا میشه کرد..
    من میخوام بهترین کار رو انجام بدم..با کمترین Process

  25. #25
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629
    نقل قول نوشته شده توسط Mahdi_20
    فرض کنید. در ابتدا سطرهام مرتب باشه و با یه دستور حذف خانه های 1 و 3و 4 و6و7 و9 پاک بشه..حالا باید از مقدار خانه شماره 2 یکی کم بشه (تا مقدارش 1 بشه) و از پنجمی 3 کم بشه (تا مقدارش 2 بشه) ..
    ولی شما تو این دستور یکی از تمام سطرها کم می کنی.
    با سلام
    دوست من، پس حلقه چى؟ اون حلقه براى اینه که تمام رکوردهاى لازم حذف بشن.
    درسته که روش کندى هست، اما تو درست بودنش شک نکن.

    نقل قول نوشته شده توسط Mahdi_20
    بهترین راه حلی که به ذهنم میرسه اینه که تمام سطرهای این ستون رو دوباره مقدار دهی کنم..ولی دستورش رو نمی دونم.
    بله، این هم روش خوبیه اما خود من هم چیزى پیدا نکردم. البته اگه اصرار نداشته باشید که این کار رو از طریق فرامین SQL انجام بدید راه حل دیگه‌اى هم هست.
    تو ADO.NET یه DataTable رو با این جدولتون پر کنید. سطرهایى رو که مى‌خواهید حذف کنید
    بعد یک حلقه for خوشگل اون field شما رو با اعداد پیایى پر مىکنه و بعد کافیه که DataBase رو Update کنید. (البته من خودم روش اول رو ترجیح مى‌دم.)

    صبا صبوحى

تاپیک های مشابه

  1. مشکل در دانلود JDK 5.0 Update 8 از سایت sun
    نوشته شده توسط mehrdad2 در بخش Java SE : نگارش استاندارد جاوا
    پاسخ: 11
    آخرین پست: چهارشنبه 31 تیر 1388, 16:50 عصر
  2. مشکل در Update کردن
    نوشته شده توسط alex_kh58 در بخش C#‎‎
    پاسخ: 3
    آخرین پست: چهارشنبه 11 بهمن 1385, 07:46 صبح
  3. update
    نوشته شده توسط javad0062 در بخش PHP
    پاسخ: 1
    آخرین پست: سه شنبه 07 شهریور 1385, 16:48 عصر
  4. یک سئوال در مورد Update کردن 2 جدول در Dbهای مختلف
    نوشته شده توسط mhaeri در بخش SQL Server
    پاسخ: 4
    آخرین پست: یک شنبه 29 مرداد 1385, 17:04 عصر
  5. چگونه از Update اطلاعات جداول در Ado مطلع شویم ؟
    نوشته شده توسط Mah6447 در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: یک شنبه 22 مرداد 1385, 09:05 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •