![]() |
|
عرض مجموع قيم سجلات باستخدام أوامر SQL - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : عرض مجموع قيم سجلات باستخدام أوامر SQL (/showthread.php?tid=8396) الصفحات:
1
2
|
عرض مجموع قيم سجلات باستخدام أوامر SQL - nabilkeb - 14-02-2017 مثال لتوضيح الإشكال عندي 03 جداول (1-جدول الزبون-2-جدول الديون-3-جدول المدفوعات) الجدول الأول اسمه Client : فيه 03 حقول: Code_Client-Nom_Client الجدول الثاني اسمه Credit: فيه 03 حقول: Code_Client-Montant_Credit-Date_Credit الجدول الثالث اسمه Versement: فيه 03 حقول: Code_Client-Montant_Versement-Date_Versement * إذا أردنا معرفة مجموع ديون كل زبون: كود : select Client.Code_Client , SUM(MonTant_Credit)
From Client , Credit
where Client.Code_Client=Credit.Code_Client
Group By Code_Clientكود : select Client.Code_Client , SUM(MonTant_Versement)
From Client , Versement
where Client.Code_Client=Versement.Code_Client
Group By Code_Client*الإشكال ؟ : معرفة الإثنين: هذا الكود صحيحا برمجيا لكن يعطي نتائج خاطئة: كود : select Client.Code_Client , SUM(MonTant_Credit) , SUM(MonTant_Versement)
From Client , Credit , Versement
where (Client.Code_Client=Credit.Code_Client) and (Client.Code_Client=Versement.Code_Client)
Group By Code_Client- ما هو الصواب؟ و إذا أردنا أيضا عرض الفارق بين الديون و المدفوعات في عمود مستقل أيضا ؟ RE: عرض مجموع قيم سجلات باستخدام أوامر SQL - لؤي - 14-02-2017 السلام عليكم هل الكود الاول و الثاني يعملان بشكل صحيح ؟ لأنه لا يوجد التعليمة join حاول بالآتي: PHP كود : select Client.Code_Client , SUM(MonTant_Credit) , SUM(MonTant_Versement)RE: عرض مجموع قيم سجلات باستخدام أوامر SQL - nabilkeb - 14-02-2017 Lorsque GROUPBY existe, chaque champ simple dans les projecteurs doit être dans GROUPBY (14-02-2017, 03:10 PM)nabilkeb كتب : Lorsque GROUPBY existe, chaque champ simple dans les projecteurs doit être dans GROUPBY للتصحيح ,Client.Code_Client عوضا عن ,Versement.Code_Client بعد Group By ورغم ذلك النتائج خاطئة نفس الإشكال RE: عرض مجموع قيم سجلات باستخدام أوامر SQL - لؤي - 14-02-2017 السلام عليكم جرب هذا : PHP كود : select Client.Code_Client A , SUM(MonTant_Credit) B, SUM(MonTant_Versement) CRE: عرض مجموع قيم سجلات باستخدام أوامر SQL - nabilkeb - 14-02-2017 (14-02-2017, 05:04 PM)لؤي كتب : السلام عليكم بارك الله فيك ، على الرد السريع و المساعدة ، لم أستوعب جيدا الكود لكن رسالة خطأ واردة و لازال الإشكال قائما RE: عرض مجموع قيم سجلات باستخدام أوامر SQL - لؤي - 14-02-2017 جرب مع جدولين: PHP كود : select Client.Code_Client A , SUM(Credit.MonTant_Credit) B RE: عرض مجموع قيم سجلات باستخدام أوامر SQL - nabilkeb - 14-02-2017 لتوضيح الإشكال ، الكود المطروح أعلاه: كود : select Client.Code_Client , SUM(MonTant_Credit) , SUM(MonTant_Versement)
From Client , Credit , Versement
where (Client.Code_Client=Credit.Code_Client) and (Client.Code_Client=Versement.Code_Client)
Group By Code_Clientعندما يكون للزبون سجل واحد في جدول الديون مثلا 18000دج ، وله أيضا 3 سجلات في جدول المدفوعات مثلا 300دج و سجل آخر 300دج ن وسجل ثالث 1400دج من المفروض أن تكون نتيجة الإستعلام المذكور أعلاه هي: 18000دج ديون -7400 مدفوعات لكن نتيجة الإستعلام هي: 54000دج ديون - 7400 مدفوعات ، يعني بما أن لديه 3 سجلات للمدفوعات تم جمعها 7400دج ، قام الإستعلام بـعملية : 18000+18000+18000دج و أعطى نتيجة 54000 ، وهذا خطأ ما هو الإستعلام الصحيح؟ (14-02-2017, 05:34 PM)nabilkeb كتب : لتوضيح الإشكال ، الكود المطروح أعلاه: عفوا 3000دج و ليس 300دج RE: عرض مجموع قيم سجلات باستخدام أوامر SQL - nabilkeb - 15-02-2017 (14-02-2017, 05:31 PM)لؤي كتب : جرب مع جدولين: مع جدولين (جدول الزبون-جدول الديون) أو (جدول الزبون-جدول المدفوعات) يعطي نتائج صحيحة لكني أريد عرض الحالتين: مجموع الديون - مجموع المدفوعات ، ليتم بعد ذلك حساب الفارق بينهما (لعرض الديون الحالية أو الفعلية) RE: عرض مجموع قيم سجلات باستخدام أوامر SQL - nabilkeb - 15-02-2017 (14-02-2017, 05:34 PM)nabilkeb كتب : لتوضيح الإشكال ، الكود المطروح أعلاه: هل من رد أو مســــاعدة ؟؟؟ RE: عرض مجموع قيم سجلات باستخدام أوامر SQL - أبو معاذ - 15-02-2017 السلام عليكم ، أخي نبيل بما أنك تستعمل Firebird على ما أظن ؟ لماذا لا تستخدم الحلقات في الإجراءات المخزنة Procedure stockée مثال كود : For select Code_Client
FROM Client
Into LeCodeCli
DO
Begin
Select Sum(MonTant_Credit)
FROM Credit
Into TotCredit
Where (Credit.Code_Client = :LeCodeCli)
Select Sum(MonTant_Versement)
FROM Versement
Into TotVers
Where (Credit.Code_Client = :LeCodeCli)
LeSolde = TotCredit - TotVers
endإذا تريد توضيح أكثر ، على العين و الراس. |