المشاركات : 429
المواضيع 28
:
: 0
الإنتساب : May 2008
مثال لتوضيح الإشكال
عندي 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
- ما هو الصواب؟ و إذا أردنا أيضا عرض الفارق بين الديون و المدفوعات في عمود مستقل أيضا ؟
المشاركات : 628
المواضيع 72
:
: 211
الإنتساب : Jun 2010
14-02-2017, 01:57 PM
(آخر تعديل لهذه المشاركة: 14-02-2017, 01:58 PM بواسطة لؤي.)
السلام عليكم
هل الكود الاول و الثاني يعملان بشكل صحيح ؟ لأنه لا يوجد التعليمة join
حاول بالآتي:
PHP كود : select Client.Code_Client , SUM(MonTant_Credit) , SUM(MonTant_Versement) From Client INNER JOIN Credit on Client.Code_Client=Credit.Code_Client INNER JOIN Versement on Client.Code_Client=Versement.Code_Client Group By Versement.Code_Client
أدبني الدهر فأراني نقص عقلي وإذا ما ازددت علما زادني علما بجهلي
المشاركات : 429
المواضيع 28
:
: 0
الإنتساب : May 2008
14-02-2017, 03:10 PM
(آخر تعديل لهذه المشاركة: 14-02-2017, 03:14 PM بواسطة nabilkeb.)
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
ورغم ذلك النتائج خاطئة نفس الإشكال
المشاركات : 628
المواضيع 72
:
: 211
الإنتساب : Jun 2010
السلام عليكم
جرب هذا :
PHP كود : select Client.Code_Client A , SUM(MonTant_Credit) B, SUM(MonTant_Versement) C From Client INNER JOIN Credit on Client.Code_Client=Credit.Code_Client INNER JOIN Versement on Client.Code_Client=Versement.Code_Client Group By A,B,C
أدبني الدهر فأراني نقص عقلي وإذا ما ازددت علما زادني علما بجهلي
المشاركات : 429
المواضيع 28
:
: 0
الإنتساب : May 2008
(14-02-2017, 05:04 PM)لؤي كتب : السلام عليكم
جرب هذا :
PHP كود : select Client.Code_Client A , SUM(MonTant_Credit) B, SUM(MonTant_Versement) C From Client INNER JOIN Credit on Client.Code_Client=Credit.Code_Client INNER JOIN Versement on Client.Code_Client=Versement.Code_Client Group By A,B,C
بارك الله فيك ، على الرد السريع و المساعدة ، لم أستوعب جيدا الكود لكن رسالة خطأ واردة
و لازال الإشكال قائما
المشاركات : 628
المواضيع 72
:
: 211
الإنتساب : Jun 2010
جرب مع جدولين:
PHP كود : select Client.Code_Client A , SUM(Credit.MonTant_Credit) B From Client INNER JOIN Credit on Client.Code_Client=Credit.Code_Client Group By A,B
أدبني الدهر فأراني نقص عقلي وإذا ما ازددت علما زادني علما بجهلي
المشاركات : 429
المواضيع 28
:
: 0
الإنتساب : May 2008
14-02-2017, 05:34 PM
(آخر تعديل لهذه المشاركة: 14-02-2017, 05:37 PM بواسطة nabilkeb.)
لتوضيح الإشكال ، الكود المطروح أعلاه:
كود : 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
يعرض 3 أعمدة: كود الزبون - مجموع قيم الديون للزبون - مجموع قيم مدفوعات الزبون
عندما يكون للزبون سجل واحد في جدول الديون مثلا 18000دج ، وله أيضا 3 سجلات في جدول المدفوعات مثلا 300دج و سجل آخر 300دج ن وسجل ثالث 1400دج
من المفروض أن تكون نتيجة الإستعلام المذكور أعلاه هي: 18000دج ديون -7400 مدفوعات
لكن نتيجة الإستعلام هي: 54000دج ديون - 7400 مدفوعات ، يعني بما أن لديه 3 سجلات للمدفوعات تم جمعها 7400دج ، قام الإستعلام بـعملية : 18000+18000+18000دج و أعطى نتيجة 54000 ، وهذا خطأ
ما هو الإستعلام الصحيح؟
(14-02-2017, 05:34 PM)nabilkeb كتب : لتوضيح الإشكال ، الكود المطروح أعلاه:
كود : 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
يعرض 3 أعمدة: كود الزبون - مجموع قيم الديون للزبون - مجموع قيم مدفوعات الزبون
عندما يكون للزبون سجل واحد في جدول الديون مثلا 18000دج ، وله أيضا 3 سجلات في جدول المدفوعات مثلا 300دج و سجل آخر 300دج ن وسجل ثالث 1400دج
من المفروض أن تكون نتيجة الإستعلام المذكور أعلاه هي: 18000دج ديون -7400 مدفوعات
لكن نتيجة الإستعلام هي: 54000دج ديون - 7400 مدفوعات ، يعني بما أن لديه 3 سجلات للمدفوعات تم جمعها 7400دج ، قام الإستعلام بـعملية : 18000+18000+18000دج و أعطى نتيجة 54000 ، وهذا خطأ
ما هو الإستعلام الصحيح؟
عفوا 3000دج و ليس 300دج
المشاركات : 429
المواضيع 28
:
: 0
الإنتساب : May 2008
(14-02-2017, 05:31 PM)لؤي كتب : جرب مع جدولين:
PHP كود : select Client.Code_Client A , SUM(Credit.MonTant_Credit) B From Client INNER JOIN Credit on Client.Code_Client=Credit.Code_Client Group By A,B
مع جدولين (جدول الزبون-جدول الديون) أو (جدول الزبون-جدول المدفوعات) يعطي نتائج صحيحة
لكني أريد عرض الحالتين: مجموع الديون - مجموع المدفوعات ، ليتم بعد ذلك حساب الفارق بينهما (لعرض الديون الحالية أو الفعلية)
المشاركات : 429
المواضيع 28
:
: 0
الإنتساب : May 2008
(14-02-2017, 05:34 PM)nabilkeb كتب : لتوضيح الإشكال ، الكود المطروح أعلاه:
كود : 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
يعرض 3 أعمدة: كود الزبون - مجموع قيم الديون للزبون - مجموع قيم مدفوعات الزبون
عندما يكون للزبون سجل واحد في جدول الديون مثلا 18000دج ، وله أيضا 3 سجلات في جدول المدفوعات مثلا 300دج و سجل آخر 300دج ن وسجل ثالث 1400دج
من المفروض أن تكون نتيجة الإستعلام المذكور أعلاه هي: 18000دج ديون -7400 مدفوعات
لكن نتيجة الإستعلام هي: 54000دج ديون - 7400 مدفوعات ، يعني بما أن لديه 3 سجلات للمدفوعات تم جمعها 7400دج ، قام الإستعلام بـعملية : 18000+18000+18000دج و أعطى نتيجة 54000 ، وهذا خطأ
ما هو الإستعلام الصحيح؟
(14-02-2017, 05:34 PM)nabilkeb كتب : لتوضيح الإشكال ، الكود المطروح أعلاه:
كود : 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
يعرض 3 أعمدة: كود الزبون - مجموع قيم الديون للزبون - مجموع قيم مدفوعات الزبون
عندما يكون للزبون سجل واحد في جدول الديون مثلا 18000دج ، وله أيضا 3 سجلات في جدول المدفوعات مثلا 300دج و سجل آخر 300دج ن وسجل ثالث 1400دج
من المفروض أن تكون نتيجة الإستعلام المذكور أعلاه هي: 18000دج ديون -7400 مدفوعات
لكن نتيجة الإستعلام هي: 54000دج ديون - 7400 مدفوعات ، يعني بما أن لديه 3 سجلات للمدفوعات تم جمعها 7400دج ، قام الإستعلام بـعملية : 18000+18000+18000دج و أعطى نتيجة 54000 ، وهذا خطأ
ما هو الإستعلام الصحيح؟
عفوا 3000دج و ليس 300دج
هل من رد أو مســــاعدة ؟؟؟
المشاركات : 1,252
المواضيع 170
:
: 1,500
الإنتساب : Jul 2009
السلام عليكم ،
أخي نبيل بما أنك تستعمل 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
إذا تريد توضيح أكثر ، على العين و الراس.
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
|