PDA

View Full Version : تغییر کوئری دارای delete و استفاده از اون



mohaddeseh87
سه شنبه 07 مهر 1394, 12:33 عصر
سلام

لازمه اول یک توضیح کوچیک بدم و اون اینکه من به تازگی پشتیبان یک سامانه شدم و تا حالا بطور حرفه ایی با اس کیو ال کار نکرده بودم.
اخیرا یک کلاسی در این مورد رفتم و خب خیلی مطلب یاد گرفتم ولی هنوز به درستی اسفاده ازشون رو بلد نیستم.

مشکلی که بوجود اومده اینکه من در دیتابیسم یک جدول به نام Fraction (کسور جاری) دارم که جدول پدره و یک جدول به نام FractionItem دارم که جدول فرزنده و اطلاعات کسور معوقه درونشون ریخته میشه

کاربری که در سامانه اطلاعات وارد میکنه اومده اشتباهاً کسور معوقه ها رو درون کسور جاری ریخته و حالا اطلاعات با هم قاطی شده.
من با کوئری زیر تونستم اطلاعاتی رو که میخوام از داخل کسور جاری خارج بشه و به کسور معوقه ام انتقال پیدا کنه، پیدا کنم.
مشکل اینجاست که اگر از دستور Update استفاده کنم یکسری اطلاعات اشتباهی هم جابه جا میشه ولی اگر اطلاعات رو delete کنم تمام اطلاعاتی که میخوام انتقال داده بشه به درستی حذف میشه

سوال من اینکه میشه کوئری رو طوری تغییر داد که پس از حذف اطلاعات، اون اطلاعات داخل یک جدول دیگه ذخیره بشه و بعد به جایی که میخوام انتقالش بدم؟؟؟؟:متفکر::متفکر:

ممنون میشم اگر کسی در این مورد ایده ایی داره اون رو اعلام کنه.


USE Retirement
SELECT *
FROM Fraction
INNER JOIN FractionItem
ON Fraction.FractionID=FractionItem.FractionID
WHERE FractionPeriod>='1360/01' and FractionPeriod <='1379/12'
AND FractionItem.BaseAmount<>0
AND FractionItem.PersonnelAmount<>0
AND FractionItem.SumFractionItemPersonnel=0
AND FractionItem.SumFractionItemOrganization=0
AND FractionItem.OrganizationAmount=0
AND Fraction.FractionTypeID=1

mohaddeseh87
یک شنبه 12 مهر 1394, 09:50 صبح
سلام

یعنی واقعاً کسی نیست بلد باشه :متعجب:
هیچ کس نظری نداره؟؟؟؟؟؟؟؟؟؟؟:افسرده:

کمک لازم دارم:گریه:

mohaddeseh87
شنبه 18 مهر 1394, 10:07 صبح
هیچ کسی نمیتونه کمک کنه!!!!!!!!!!!!!!!:متعجب:

یه راهنمایی کوچولو هم شاید کمک کننده باشه!!!!!!!!!!!!!!!:افسرده::افسرده ::افسرده:

مهدی نان شکری
شنبه 18 مهر 1394, 11:31 صبح
با سلام
شما می توانید با استفاده از Output در MSSQL 2005 به بعد این کار رو به شکل زیر انجام بدید.

delete Person.EmailAddress output DELETED.* into mytable where EmailAddressID = 1

mohaddeseh87
شنبه 18 مهر 1394, 11:46 صبح
سلام
با سپاس فراوان از پاسختون

همانطور که گفتم من هنوز اول راهم. لطفاً در مورد این کوئری و نحوه کارش یکم توضیح بدید.
متشکرم

مهدی نان شکری
شنبه 18 مهر 1394, 12:00 عصر
این یک دستور خیلی ساده حذف است

delete Person.EmailAddress where EmailAddressID = 1

که ایمیل آدرسی که کد آن برابر یک هست رو از جدول EmailAddress در اسکیمای Person حذف میکند.

با اضافه کردن عبارت output DELETED.* into mytable به دستور Delete پایگاه داده MSSQL بعد از حذف رکورد هایی که حذف شده اند را در جدول mytable ذخیره میکند.

شما می توانید به جای * نام فیلد های مورد نیاز را انتخاب نمایید.
توجه کنید که ساختار جدول mytable متناظر با فیلد های مورد نیاز باشد.