PDA

View Full Version : جمع کردن مجموع یک فیلد و ریختنش در table دیگر



rsheytoonak
شنبه 06 مرداد 1386, 15:04 عصر
سلام
من میخوام مجموع فیلد p1 را حساب کنم که فیلد id آن با هم برابر باشند و سپس آن را در table2 در فیلد p2 بریزم کسی میتونه من را راهنمایی کنه

SYNDROME
شنبه 06 مرداد 1386, 16:18 عصر
با سلام

سلام
من میخوام مجموع فیلد p1 را حساب کنم که فیلد id آن با هم برابر باشند و سپس آن را در table2 در فیلد p2 بریزم کسی میتونه من را راهنمایی کنه
کاربر عزیر اگر در سایت جستجو می کردید همین امروز نمونه این سوال شما در لینک زیر مطرج شده بود.
http://barnamenevis.org/forum/showthread.php?t=74035
بهرحال از کد زیر استفاده کن.


Insert Into Table2(P2)
SELECT Sum(P1)
FROM Table1
Group By ID

supporter
شنبه 06 مرداد 1386, 16:21 عصر
UPDATE Table2
SET P2 = (SELECT SUM(P1) FROM U1 WHERE ID = :ID)
WHERE ID = :ID

rsheytoonak
یک شنبه 07 مرداد 1386, 00:26 صبح
با دستور insert که کارم راه نیفتاد چون یه فیلد جدید میسازه من میخام تویه همان فیلد ریخته بشه که id اون با id table1 برابره از دستور زیر استفاده کردم
Form3.ADOQuery1.SQL.Add('update table2 set p2=(select sum(p1) from table1 group by id)'); ولی errore زیر را میده
subquery returned more then 1 value. this is not permitted when the subquery follows =,!=,<,<=,>,>= or when the subquery is used as an experession. اگه میشه راهنماییم کنید

ghabil
یک شنبه 07 مرداد 1386, 00:46 صبح
من میخوام مجموع فیلد p1 را حساب کنم که فیلد id آن با هم برابر باشند
فیلد ایدی چی با چی برابر باشه ؟ اگر میخوای مجموع فیلدهایی که آیدیشون در جدول 1 با هم برابر هست رو بگیری اونوقت فیلدی که در جدول 2 میخوای آپدیت بشه باید چه شرطی داشته باشه؟!

ببین کلا کاری که میخوای بکنی رو خوب توضیح ندادی، این کدی هم که نوشتی از نظر منطقی درست نیست چون داری میگی به ازای هر ID مجموع P1 ها رو بهت بده پس تعداد نتایج میشه به تعداد ID ها در حالیکه تو داری یک فیلد رو Update میکنی و باید یک مقدار توی یک فیلد بزاری.
اگر میخوای درست راهنمایی بشی سوالت رو درست و با توضیح کامل بپرس.



کاربر عزیر اگر در سایت جستجو می کردید همین امروز نمونه این سوال شما در لینک زیر مطرج شده بود.

الیته جستجو کار بسیار خوبیه ، ولی من نمیدونم از این توضیحات چطوری متوجه شدی که این سوال رو که جوابش رو گذاشتی رو پرسیده!

Batman
یک شنبه 07 مرداد 1386, 07:53 صبح
با سلام
دوسا عزیز این کدها رو امتحان کن
یه متغییر سراسری از نوع integer تعریف کن
حالا توی خاصیت oncellclick جدول این کد رو وارد کن
id:=adoquery1.fields[0].value;
فیلد صفر مثلا شماره فیلدی هستش که id ذخیره شده
حالا میتونی هر جا که میخوای این کدها رو وارد کنی
adoquery1.sql.add('select sum(filedname) from tablename where(id=:id)');
adoquery1.parameters.parambyname('id').value:=id;
adoquery1.open
label1.caption:=adoquety1.fields[0].value;
خوب حالا مجموع فیلد p1 بدست اومده اگه دوست داشتی توی جدول دوم update یا inset کن
اگه مشکلی بود بگو
موفق باشی

rsheytoonak
یک شنبه 07 مرداد 1386, 23:40 عصر
adoquery1.sql.add('select sum(filedname) from tablename where(id=:id)');
adoquery1.parameters.parambyname('id').value:=id;
adoquery1.open
label1.caption:=adoquety1.fields[0].value;
این دستوری که شما دادید فقط فیلد اول را در lable1 نشان می ده و جمعش را نشون نمی ده من فکر می کنم مشکلش از این خط باشه
label1.caption:=adoquety1.fields[0].value;

Batman
سه شنبه 09 مرداد 1386, 11:09 صبح
ببین دوست عزیز
دستوری که شما گفتید خطا نداره
به دلیل اینکه مجموع فیلدها رو در یک label نشون میدم