PDA

View Full Version : دستور اس کیو ال



لاله86
شنبه 25 خرداد 1387, 10:28 صبح
سلام
من میخوام دو تا جدول رو با هم جوینت کنم و مجموع یک فیلد رو از جدول اول با مجموع فیلدی از جدول دوم رو با هم جمع کنم و مقداری رو از کل این مجموعه کم کنم و داخل یه متغیر بزارم
مثلا کد شناسایی یه فرد در جدول اول و جدول دوم هست. حالا من میخوام مجموع فیلدی از جدول اول رو با مجموع فیلدی از جدول دوم با هم جمع بشه و از مقدار بدست آمده عدد 2 رو کم کنم (مثلا). و بعد روی نتیجه بدست اومده یه if بزارم . میشه راهنمایی کنید این دستور رو چطور بنویسم.
ممنون

delphiprog3000
شنبه 25 خرداد 1387, 12:30 عصر
با سلام.

دوست من منظور از مجموع فیلدها چیه؟ چه فیلدهایی باید با هم جمع شوند.؟

میشه کاملتر در مورد فیلدهاتون توضیح بدین.....

موفق باشید...............

اصغر (پآچ)
شنبه 25 خرداد 1387, 23:26 عصر
سلام دوست من
برای اینکار باید از دستور زیر استفاده کنی


SELECT Sum(field1.table1) as sum1, sum(field2.table2) as sum2 From table1 INNER JOIN table2 ON Table1.keyField = table2.field

بعد باید بیای از توی برنامه ات مقدار sum1 و sum2 رو بگیری و از مقدار کل کم کنی

موفق و موید باشی

SYNDROME
یک شنبه 26 خرداد 1387, 07:02 صبح
SELECT Sum(field1.table1) as sum1, sum(field2.table2) as sum2 From table1 INNER JOIN table2 ON Table1.keyField = table2.field


فکر کنم اینجوری کاملتر است.نتیجه در @Sub ریخته می شود.


SELECT @Sub = (Sum(field1.table1) - sum(field2.table2)) From table1 INNER JOIN table2 ON Table1.keyField = table2.field

موفق باشید

لاله86
یک شنبه 26 خرداد 1387, 09:24 صبح
ببینید من یه ای دی او کوری دارم که یه دی بی گرید برای تست بهش وصل کردم وقتی کد زیر رو مینویسم نتیجه دی بیگیرید همونه که من میخوام منتها نمیدونم چطور به متغیر توی برنامه دلفی نسبتش بدم
mandemo.SQL.Clear;
mandemo.Active:= false;
mandemo.SQL.Add (' SELECT Sum(tedadrooz) ');
mandemo.SQL.Add ('from t_mo_r');

mandemo.Active:=true;
mandemo.Open ;
ولی وقتیکد زیر رو مینویسم ایراد میگیره که فیل مورد نظر پیدا نمیشه
mandemo.SQL.Clear;
mandemo.Active:= false;
mandemo.SQL.Add (' SELECT Sum(tedadrooz) ');
mandemo.SQL.Add ('from t_mo_r');
s:= mandemo.FieldValues ['tedadrooz'];
mandemo.Active:=true;
mandemo.Open ;

اصغر (پآچ)
دوشنبه 27 خرداد 1387, 00:56 صبح
ببینید من یه ای دی او کوری دارم که یه دی بی گرید برای تست بهش وصل کردم وقتی کد زیر رو مینویسم نتیجه دی بیگیرید همونه که من میخوام منتها نمیدونم چطور به متغیر توی برنامه دلفی نسبتش بدم
mandemo.SQL.Clear;
mandemo.Active:= false;
mandemo.SQL.Add (' SELECT Sum(tedadrooz) ');
mandemo.SQL.Add ('from t_mo_r');

mandemo.Active:=true;
mandemo.Open ;
ولی وقتیکد زیر رو مینویسم ایراد میگیره که فیل مورد نظر پیدا نمیشه
mandemo.SQL.Clear;
mandemo.Active:= false;
mandemo.SQL.Add (' SELECT Sum(tedadrooz) ');
mandemo.SQL.Add ('from t_mo_r');
s:= mandemo.FieldValues ['tedadrooz'];
mandemo.Active:=true;
mandemo.Open ;

سلام دوست من
اولا از تگ کد استفاده کن تا قابل فهم تر باشه:


mandemo.SQL.Clear;
mandemo.Active:= false;
mandemo.SQL.Add (' SELECT Sum(tedadrooz) ');
mandemo.SQL.Add ('from t_mo_r');

mandemo.Active:=true;
mandemo.Open ;


ثانیا این خط که قرمز کردم اصلا نیازی نیست بذاری چون با تغییر در SQL عنصر ADOQuery خود به خود غیر فعال میشه!
ثالثا یک از این دو خط که آبی شده رو بذاری کافیه چون هر دوتا یه کار رو انجام میده!

رابعا کد زیر رو امتحان کن ان شاا... جواب می گیری:


mandemo.SQL.Clear;
mandemo.SQL.Add (' SELECT Sum(tedadrooz) ');
mandemo.SQL.Add ('from t_mo_r');
mandemo.Open ;

s:= mandemo.FieldByNeme('tedadrooz').AsInteger;


موفق و موید باشی