الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]حساب الكمية بواسطة استعلام Sql؟

بدأه المبرمج عبدالكريم في 14 أغسطس 2008 · 3 رد · 919 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

اخواني الاعزاء ...

لنفرض ان لدينا جدولين ..

الاول : البنود (اصناف بضائع مثلا) , نسميه table1

الحقول : رقم البند (id) , اسم البند (i_name)

السجلات :

1 بند1

2 بند2

3 بند3

الثاني : حركة بيع وشراء الاصناف (الاستيراد والتصدير) , نسميه table2

الحقول : رقم البند(id) , نوع العملية(بيع او شراء)(type) , الكمية(qua)

السجلات :

1 شراء 1000

1 شراء 500

2 شراء 2500

1 بيع 800

المطلوب : كود SQL يقوم بحساب الكمية للحالية لجميع البنود ...

نلاحظ من السجلات المدخلة أن :

كمية البند رقم 1 (بند1) هي 1000+500-800=700

كمية البند رقم 2 (بند2) هي 2500-0=2500

كمية البند رقم 3 (بند3) هي 0-0=0

كيف يتم ذلك برمجيا بواسطة SQL؟

قد تقول أن عمل جدولين للبيع والشراء أفضل من جدول واحد ... ولكن البرنامج مبني على هذا الاساس ويصعب التعديل خاصة ان البرنامج في مراحله الاخير والتعديل ليس سهل , وانا ذكرت نموذج بسيط يوضح مشكلتي ...

الفكرة اللي عملت عليها هي :

انشأت استعلام(q1) يظهر رقم البند من table2 و مجموع الكمية من table2 بشرط أن النوع شراء

هكذا :

 SELECT table2.id,sum(table2.qua) FROM table2 WHERE table2.type="شراء" group by table2.id

وكذلك استعلام q2 كالسابق ولكن النوع بيع

SELECT  table2.id,table2.type,sum(table2.qua)  FROM table2 WHERE table2.type="بيع"  group by table2.id

وبعد ذلك عملت استعلام يقوم بعملية الطرح لكل بند من الاستعلام q1 و q2

هكذا :

SELECT Query1.i_id,(Query1.SumOfqua-Query2.SumOfqua) as t_qua  FROM Query1 inner join Query2 on Query1.i_id=Query2.i_id;

هكذا اكون حصلت على المطلوب ((ولكن...))

لن تظهر الا كمية (بند1) ؟؟؟ لماذا ؟؟ السبب هو لان له علمية شراء وبيع .. ام البقية لا .. لانها لها عملية شراء فقط او بدون عملية شراء او بيع...

المطلوب : كيف اجعل جميع البنود تظهر , بحيث ان التي ليس لها اية عملية بيع(شراء فقط) : يظهر مجموع الشراء (او مجموع الشراء - 0=مجموع الشراء) , والتي لم يتم فيها عملية الشراء ولا البيع : يظهر 0 او (0-0=0)

اتمنى ان اجد لديكم الحل .. وآسف على التطويل ولكن لاسهل وأوضح لكم مشكلتي بالتفصيل ...

علمااااااا : باني اريد جميع الاكواد SQL فقط ... وشكرا مقدما

وجزاكم الله خير الدنيا والاخرة

#2
SELECT Query1.i_id,(Query1.SumOfqua-Query2.SumOfqua) as t_qua  FROM Query1 LEFT OUTER join Query2 on Query1.i_id=Query2.i_id;

او

SELECT Query1.i_id,(Query1.SumOfqua-Query2.SumOfqua) as t_qua  FROM Query1 FULL OUTER join Query2 on Query1.i_id=Query2.i_id;
اقتباس
[وسط]اللهم ارحمنا إذا اشتدت السكرات، وفاضت العبرات، وتعطلت القوى و القدرات.

اللهم ارحمنا إذا يئس منا الطبيب ،وبكى علينا الحبيب ، واشتد البكاء و النحيب.

اللهم ارحمنا إذا حملنا على الأعناق ، و التفت الساق بالساق، إلى ربك يومئذ المساق.

اللهم ارحمنا إذا وارينا التراب، وغلقت الأبواب، وانفض الأهل و الأحباب

[/وسط]

545050692.gif

#3

شكرا لك اخي الغالي وما قصرت ,, ردك قرب لي الحل وبحثت وحصلت على المطلوب ..

هذا هو الحل مرفق

db1.zip

#4

بسم الله الرحمن الرحيم

تمت الإجابة على الموضوع

إدارة الفريق العربي للبرمجة

مواضيع مشابهة