PDA

View Full Version : لیست رکوردهایی که مجموع یکی از فیلدهای آنها با عددی برابر باشد



MNosouhi
جمعه 26 آذر 1389, 17:23 عصر
چطور می تونم لیست رکوردهایی را بدست بیارم که مجموع یکی از فیلدهای آنها با عددی برابر باشد .
یه چیزی شبیه این :
Select id,num from table1 where sum(num)=100
البته می دونم که کد بالا اشتباهه و استفاده از sum شرایط خاصی داره .
دوستان اگر راه حلی دارن لطفا پیشنهاد کنند .

chasbonakam
جمعه 26 آذر 1389, 17:42 عصر
سلام

البته سوال یه ذره گنگه ولی به نظر من با استفاده از Select های تو در تو می تونی به گزارش دلخواهت برسی.

Reza_Yarahmadi
جمعه 26 آذر 1389, 21:23 عصر
اگر منظورتون اینه که برای رکوردهایی که یک فیلدشون مساوی هستند این مجموع محاسبه و مقایسه بشه میتونید از Group by استفاده کنید

Select
Id,
Sum(num) as SumNum
From
TableName
Group by
ID
Having
Sum(Num) = 100

MNosouhi
شنبه 27 آذر 1389, 06:54 صبح
البته سوال یه ذره گنگه

اگر منظورتون اینه که ...
جدولی به فرمت زیر داریم :

نوع فیلد نام فیلد
Int id
Int Num

که حاوی اطلاعات زیر است :

Num id
100 1
120 2
150 3
190 4

حال چطور می توان لیست رکوردهایی را نمایش داد که مجموع ستون Num مثلا 310 شود ، یعنی جدول زیر را نمایش دهد :

Num id
120 2
190 4

البته چون نتونستم با ادیتور سایت خوب کار کنم ، سوالم رو در فایل word ذخیره کردم و ضمیمه کردم .
با تشکر از همه دوستان

Reza_Yarahmadi
شنبه 27 آذر 1389, 09:38 صبح
بازم توضيحاتتون كامل نيست.
تا تركيب چند عددي محاسبه بشه؟ يعني فرضا اگر 310 ركورد فيلد مورد نظرشون 1 بود اونها رو هم بصورت يك نتيجه مطلوب نمايش بده يا فقط مجموع 2 ركورد رو محاسبه كنه؟
براي مورد اول راه حل مناسبي فكر نميكنم وجود داشته باشه ولي براي حالتي كه فقط مجموع 2 ركوردي مد نظر باشه ، ميشه با يك Join به نتيجه رسيد.

Select
t1.Id,
t2.Id,
t1.Num,
t2.Num
From
tbl t1 , tbl t2
Where
t1.Num + t2.Num = 310

MNosouhi
شنبه 27 آذر 1389, 13:10 عصر
از پیگیریتون ممنون .

تا تركيب چند عددي محاسبه بشه؟
اینکه ترکیب چند عددی باشه مهم نیست (2،3،4و...) ، مهم اینه که بتونم لیست رکوردهای مورد نظر را بدست بیارم (و البته حداقل تا اندازه ای بهینه باشه ، یعنی منطقی نیست بخام برای همه ترکیب های 2تایی ، 3 تایی و ... تست کنم تا به جواب برسم ) .
فکر کنم همون کد تاپیک اول از هر توضیحی بهتر بتونه منظورم را بفهمونه :

Select id,num from table1 where sum(num)=100