PDA

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



رامین مرادی
یک شنبه 11 تیر 1396, 12:40 عصر
سلام
من نیاز دارم یه فیلدی رو با فیلد یک جدول دیگه بروزرسانی کنم. تعدادشون زیاده برا همین دستی نمیخوام انجام بدم برا همین اومد از کد زیر استفاده کردم اما جواب نداد.
و خطا میده:ناراحت:

select MasterListTbl.[BaznegariId] into [BaznegariMasterListTbl].[BaznegariId]
from dbo.MasterListTbl
where [BaznegariMasterListTbl].[MadrakId]=dbo.MasterListTbl.MadrakId


این کد رو هم نوشتم اما باز جواب نداد.

update MasterListTbl SET MasterListTbl.[BaznegariId]=[BaznegariMasterListTbl].BaznegariId from MasterListTbl
inner join [BaznegariMasterListTbl] on [BaznegariMasterListTbl].[MadrakId]=MasterListTbl.MadrakId


ممنون میشم راهنماییم کنید.:افسرده:

Mahmoud.Afrad
یک شنبه 11 تیر 1396, 19:40 عصر
کد اول که درج هست نه بروزرسانی
کد دوم باید جواب بده. اگر خطا میده بزارید. اگر خطا نمیده احتمالا مقدار مشترک در ستون مشترک وجود نداره.

و اینکه اگر به هر دو جدول نیاز دارید، چرا این کار رو انجام میدید؟!

رامین مرادی
دوشنبه 12 تیر 1396, 08:19 صبح
کد اول که درج هست نه بروزرسانی
کد دوم باید جواب بده. اگر خطا میده بزارید. اگر خطا نمیده احتمالا مقدار مشترک در ستون مشترک وجود نداره.

و اینکه اگر به هر دو جدول نیاز دارید، چرا این کار رو انجام میدید؟!

ممنون از توجهتون . کد دوم کار میکنه اما فقط یک مقدار مثلا از 600 مقدار رو تغییر میده.:افسرده:. خودمم موندم چیکار کنم. ولی تو نتیجه میگه مثلا قراره که 193 تا ردیف بروز بشن میگه اونا بروز شدن اما در واقعیت فقط مقدار یکیشون بروزرسانی شده!!!!!!!

یک ستون مشترک دارم MadrakId . از نوع varchar هست.
کد اولی رو هم اگه اجرا کنم بجای درج مقادیر میاد همه اونهایی که قراره تغییر کنن رو null میکنه!!!!!

Mahmoud.Afrad
دوشنبه 12 تیر 1396, 20:52 عصر
وقتی تعداد سطرهای تحت تاثیر قرار گرفته رو میزنه 193 ، قطعا همین تعداد آپدیت شدند. شاید شما اون رکوردها رو بررسی نکردید یا نمی بینید. یک کوئری سلکت با join بزنید ببینید مقادیر آپدیت شدند یا نه.

راه دیگر(از لحاظ پلن با کوئری قبلی یکسان هست):
update Table_2
set Table_2.content = Table_1.content
from Table_2, Table_1
where Table_1.id = Table_2.t1Id


سوال قبل منو جواب ندادید؛ اصلا چرا دارید این کار رو انجام میدید؟ یک مقدار توضیح بدید!

رامین مرادی
سه شنبه 13 تیر 1396, 08:28 صبح
خب مشکل همینه که میگه آپدیت شده ولی نتیجه خلاف اینو میگه.:متعجب:

وقتی تعداد سطرهای تحت تاثیر قرار گرفته رو میزنه 193 ، قطعا همین تعداد آپدیت شدند. شاید شما اون رکوردها رو بررسی نکردید یا نمی بینید. یک کوئری سلکت با join بزنید ببینید مقادیر آپدیت شدند یا نه.

راه دیگر(از لحاظ پلن با کوئری قبلی یکسان هست):
update Table_2
set Table_2.content = Table_1.content
from Table_2, Table_1
where Table_1.id = Table_2.t1Id


سوال قبل منو جواب ندادید؛ اصلا چرا دارید این کار رو انجام میدید؟ یک مقدار توضیح بدید!


ما یه سری مدارک و فرمها داریم که شماره خوردن.(نام و تاریخ بازنگری{همیشه باید آخرین تاریخ تغییر دیده شود} و شماره بازنگری{ همیشه باید آخرین شماره دیده شود و برای بار اول 00})
بعد بعضی وقتها نیازه اون فرمها بازنگری و اصلاح بشن.
ما میایم تو یه فرم دیگه اون تغییرات ثبت میکنیم. و اگه این تغییرات تغییر باشه یه دونه به شماره بازنگری اضافه میکنیم و اگه حذف اون مدرک باشه شماره بازنگری همون قبلی میمونه. (منظور از حذف حذف واقعی مدرک نیست . ما فقط میگیم این مدرک در این تاریخ حذف شد. و میره تو جدول مدارکمون نوعش رو میزنه منسوخ).

من هر وقت تغییری اتفاق می افته میام و اون تغییر رو تو فرم اولمم آپدیت میکنم.
اون تایپیک اول رو هم زدم چون اطلاعات قبلی رو میخواستم بروز کنم .
ولی در کل برنامه م درسته و اگه در حین وارد کردن باشه درست عمل میکنه . ولی میخواستم داده های قبلیمم بروز کنم تا دستی تغییر ندم.
بازم تشکر به خاطر توجهتون