PDA

View Full Version : سوال: انجام محاسبات اتوماتیک در دو table



ehsan7007
شنبه 07 مرداد 1391, 18:46 عصر
سلام دوستان.
من یک دیتابیس دارم که دوتا table داره.
چطوری تریف کنم که بصورت خودکار در table1، ستون دوم ردیف هایی که ستون یکشون با هم برابره رو جمع بزنه و در ستون سوم table2 ثبت کنه؟

veniz2008
شنبه 07 مرداد 1391, 20:34 عصر
سلام، برای یک رکورد خاص میخوای اینکار رو انجام بدی؟ مثلا نمرات یک دانشجو رو از یک جدول بگیره و در جدول دوم درج کنه؟

veniz2008
شنبه 07 مرداد 1391, 20:52 عصر
حالت سختش رو فرض میکنم،فرض میکنم برای همه رکوردها میخوای اینکار رو انجام بدی. خوب اینطوری استفاده کن. ابتدا از دستور DISTINCT بصورت زیر استفاده کن تا مقادیر متمایز مربوط به ستون اول رو بدست بیاری(فرض کن 10 تا رکورد داری 3 تای اول آی دی شون 100 باشه، 3تای بعدی 101 و 4 تای آخر هم 102 ، با اجرای این دستور مقادیر 100 و 101 و 102 رو بدست میاری و درون یک دیتاتیبل میریزی. یعنی یک جدول با 3 رکورد بدست میاد. منظور از userid همون ستون اولت هست).

select DISTINCT userid from table1
همونطور که گفتم نتیجه select بالا رو داخل یک دیتاتیبل بریز( با اینکار دیتاتیبل شما یک ستون با 3 سطر خواهد داشت که شامل نام کاربری خواهد بود) و بعدش تعداد سطرهای دیتاتیبل رو بدست بیار.
حالا یه حلقه for به تعداد سطرهای دیتاتیبل بساز و درون حلقه برای هر آی دی مقدار ستون دوم رو جمع بزن، به اینصورت:(منظور از mark ، ستون دوم شماست)

select sum(mark) from table1 where userid = dt.Rows[i][0].ToString()
میتونی در ادامه دستور select بالا، وقتی مقدار برای هر کاربر محاسبه شد، اونو با دستور insert در جدول دوم درج کنی.
موفق باشی دوست من.

ali_habibi1384
شنبه 07 مرداد 1391, 21:55 عصر
يك جدول تقريبا شبيه چيزي كه شما گفتيد ساختم. توي عكس دستوري رو كه ميخوايد اجرا كردم توي اس كيو ال ببينيد همونيه كه ميخوايد:
http://1.0.0.img98.net/out.php/i416532_sql.jpg
دستوري كه شما لازم داريد اينه:


select distinct name,(select SUM(nomre) from table_1 where tmp1.Name = Table_1.Name) as sm from Table_1 as tmp1

Reza_Yarahmadi
شنبه 07 مرداد 1391, 22:41 عصر
select distinct name,(select SUM(nomre) from table_1 where tmp1.Name = Table_1.Name) as sm from Table_1 as tmp1
به جای دستور بالا میتونید بصورت زیر عمل کنید
Select Name, Sum(Nomre) From Table_1 Group By Name