PDA

View Full Version : کوئری آپدیت محاسباتی



sadegh1944
چهارشنبه 22 اردیبهشت 1400, 15:35 عصر
سلام، فرض کنید یک جدول قبل آپدیت به شکل زیر داریم:

کد شخص- نوع - مقدار

علی- 1 - 1000
علی - 2 - 200
حسن - 1 - 2000
حسن - 2 - 300
رضا - 1 - 4000
رضا - 2 - 100

از اونجا که تعداد رکوردها زیاد هست من میخوام با یک کویری برای هر شخص مقدار نوع 1 منهای مقدار نوع 2 شده و برای رکوردهای نوع 1 در جدول جایگزین شود (فقط مقدار نوع 1 تغییر کند و مقدار نوع 2 بدون تغییر باشد ) بصورت زیر:

کد شخص - نوع - مقدار

علی - 1 - 800
علی - 2 - 200
حسن - 1 - 1700
حسن - 2 - 300
رضا - 1 - 3900
رضا - 2 - 100

لطفا این در مورد راهنمایی فرمائید

padide55
شنبه 25 اردیبهشت 1400, 08:06 صبح
سلام، فرض کنید یک جدول قبل آپدیت به شکل زیر داریم:

کد شخص- نوع - مقدار

علی- 1 - 1000
علی - 2 - 200
حسن - 1 - 2000
حسن - 2 - 300
رضا - 1 - 4000
رضا - 2 - 100

از اونجا که تعداد رکوردها زیاد هست من میخوام با یک کویری برای هر شخص مقدار نوع 1 منهای مقدار نوع 2 شده و برای رکوردهای نوع 1 در جدول جایگزین شود (فقط مقدار نوع 1 تغییر کند و مقدار نوع 2 بدون تغییر باشد ) بصورت زیر:

کد شخص - نوع - مقدار

علی - 1 - 800
علی - 2 - 200
حسن - 1 - 1700
حسن - 2 - 300
رضا - 1 - 3900
رضا - 2 - 100

لطفا این در مورد راهنمایی فرمائید

ابتدا نمونه بگذارید
دوم
چرا نمونه 2 داخل یک جدول دیگه نمیگذارید ؟
جدولی برای اپدیت (هر دو دریک جدول نباشند)
سوم چون در این حالت باید کدها فراخوان بشه باید یا ازdlookup استفاده کنید و یا از رکوردست

محمد رضا بهبودی
شنبه 25 اردیبهشت 1400, 09:02 صبح
با سلام و احترام
دوست عزیز
من با چند کوئری این کار را انجام دادم . البته قطعا راه ساده تری از طریق کد نویسی وجود دارد . دکمه روی فرم یک را بزنید و سپس نتیجه را در جدول یک مشاهده کنید
امیدوارم مفید باشد

mazoolagh
شنبه 25 اردیبهشت 1400, 09:09 صبح
با فرض استفاده از فقط کوئری هم، چند راه هست که ساده ترینش همون استفاده از lookup است که گفته شد ولی در تعداد زیاد رکورد ممکنه مشکل پرفورمنس داشته باشه،
گذشته از این روی جداول لینک شده ADO کار نمیکنه ولی کار راه انداز هست:

UPDATE jadval
SET meghdar=[meghdar]-DLOOKUP("meghdar","jadval","type=2 AND shakhsID=" & [shakhsID])
WHERE type=1

mazoolagh
شنبه 25 اردیبهشت 1400, 09:13 صبح
راه درست استفاده از join هست ولی نوشتن کوئری اش قدری پیچیده تر میشه ولی در هر صورت به کدنویسی نیازی نیست و در یک کوئری هم شدنی هست.

padide55
شنبه 25 اردیبهشت 1400, 13:56 عصر
نمونه کوئری با dlookup