PDA

View Full Version : استفاده از sum فیلد جدول دوم در کوئری سلکت



Mrs.Net
سه شنبه 03 دی 1387, 08:39 صبح
دوتا جدول header و check دارم. در هردو جدول فیلد code وجود داره که باهم ارتباط میدم. در جدول چک فیلد amount وجودداره که برای هر کد باید جمعش بدست بیاد.
میخوام رکوردهای جدول هدر را انتخاب کنم و برای هر رکورد جمع مبلغی که برای آن کد در جدول چک وجودداره وجودداشته باشه

select header.* , sum(check.amount) as checksum from header left join check on header.code=check.code
مشکل کد بالا اینه که باید تمام فیلدای جدول هدر یا گروپ بشن یا سام بشن که فیلداش زیادن.
راه حل دیگه ای داره؟

تولائی
سه شنبه 03 دی 1387, 10:13 صبح
select header.* ,
coalesce(( select sum(check.amount) from check where check.code = header.code ),0) as checksum from header

Mrs.Net
چهارشنبه 04 دی 1387, 16:41 عصر
با یدونه select از جدول دوم حلش کردم.
این coalesce چیه؟ تو اکسس نمیشناستش!

تولائی
چهارشنبه 04 دی 1387, 16:55 عصر
با یدونه select از جدول دوم حلش کردم.


اگه تونستید با یک select انجام بدید لطف می‌کنید اگر اون queryرو بذارید.



این coalesce چیه؟ تو اکسس نمیشناستش!
coalesce خیلی چیز بدرد بخوریه. ریخت این دستور بصورت زیره:


COALESCE ( expression [ ,...n ] )
اگر expression اول null بود expression دوم را اجرا می‌کند و اگر expression دوم null بود expression سوم را اجرا می‌کند. در اون کوئری برای آن‌که checksum مقدار null نداشته باشد اگر null شد آن را به صفر تبدیل می‌کنیم. من از اکسس خبر ندارم. می‌دونم که تو sql server این دستور وجود دارد.

Mrs.Net
جمعه 06 دی 1387, 11:14 صبح
این کوئری کاربر once4ever دادند خیلی جالب بود برای من:


select header.* , check2.sumamn
from header left join (select check.code , sum(check.amount) as sumamn group by check.code) as check2
on header.code=check2.code


این تابع هم که گفتید احتمالا همون iif هست.

تولائی
جمعه 06 دی 1387, 15:42 عصر
این تابع هم که گفتید احتمالا همون iif هست.
من اکسس بلد نیستم.

تولائی
جمعه 06 دی 1387, 15:47 عصر
این کوئری کاربر once4ever دادند خیلی جالب بود برای من:


select header.* , check2.sumamn
from header left join (select check.code , sum(check.amount) as sumamn group by check.code) as check2
on header.code=check2.code


تو این query هم که شما ذکر کردید دوتا select وجود داره. در مجموع موافقم این هم راهی برای مسئله شماست.


این تابع هم که گفتید احتمالا همون iif هست.
من اکسس بلد نیستم که بخوام نظر بدم