اذهب إلى المحتوى

السؤال

نشر

ارجو حل المشكله :

الرقم ده حساب عميل موجود في table

; V = 100

 دول اصناف في table تاني

;x = 20

;A = 30

مجموعهم 50

لو حذفت x من  table كا عمليه طرح مع v هيدينا -80 النتيجه هتطلع بالسالب علشان رقم صغير طرح من رقم كبير

ف الناتج النهائي هيبقي -80 ف table الاول فيه الحساب العميل 100 و كان بالموجب

المشكله هنا السالب ده غير حساب العميل و كان بالموجب قبل عمليه الطرح

 

Recommended Posts

  • 0
نشر (معدل)

مرحبا معاذ
اذا فرضنا الاول انه في حساب العميل يوجد 100 والعميل اشتري عناصر ب 20 و30 اذن مجموع مشتريات العميل تكون 50
واذا طرحنا من حساب العميل 50 يتبقي في حسابة 50
يعني احنا بنطرح حساب العميل - مجموع المشتريات  (100-50)

وليس نطرح مجموع المشتريات - حساب العميل (50-100)

ومن الممكن   استخدام دالة القيمة المطلقة abs
اذ كنت تريد ان تحصل علي الناتج موجب وليس بالسالب
 

abs(50-100) //result 50

 

تم التعديل في بواسطة Mahmoud Hassan19
  • 0
نشر

تستطيع استخدام دالة ABS لحساب القيمة المطلقة للنتيجة حيث ستُحوّل الدالة أي قيمة سالبة إلى قيمة موجبة.

أو استخدام شرط CASE للتحقق من علامة النتيجة، فلو كانت النتيجة سالبة، تقوم بتعيينها إلى 0.

SELECT CASE WHEN V - (x + A) >= 0 THEN V - (x + A) ELSE 0 END AS total_amount
FROM table1
WHERE id = customer_id;

أيضًا يوجد إمكانية إنشاء عمود منفصل لحساب المبلغ الإجمالي وتحديث العمود كلما تم إجراء تغيير على أي من القيم.

UPDATE table1
SET total_amount = V - (x + A)
WHERE id = customer_id;
  • 0
نشر
بتاريخ 3 دقائق مضت قال معاذ عبد الخالق:

و افرض ان حسابه اقل من ارقام التانيه و عملت عمليه الطرح هيطلع بالسالب ف هيغير الحساب بردو و هيطلع بالسالب 

وده غير بردو حسابه بقي بالسالب

مضبوط، لذا نستخدم دالة ABS  لتكون النتيجة موجبة، لكن عليك التوضيح ما الغرض من عمليات الطرح تلك؟ فالعمليات المالية مثلاً حساسة ولا نستطيع تعيينها إلى 0 في حال كانت القيمة سالبة مثلاً بل يتم رفض عملية الطرح إن كان حسابه ليس به مبلغ كافي مثلاً.

 

  • 0
نشر
بتاريخ 4 دقائق مضت قال معاذ عبد الخالق:

و افرض ان حسابه اقل من ارقام التانيه و عملت عمليه الطرح هيطلع بالسالب ف هيغير الحساب بردو و هيطلع بالسالب 

وده غير بردو حسابه بقي بالسالب

هنا لابد ان تتاكد ان القيمة الموجوده في حساب العميل اكبرمن او تساوي قيمة المشتريات

إذا كنت تشير إلى طريقة ضمان تنفيذ مجموعة من العمليات بشكلٍ ناجح كامل أو فشل كلها (نهج الكل أو لا شيء)
يمكنك استخدام مفهوم Transactions في MySQL المعاملات تسمح بتنفيذ مجموعة من العمليات مع الضمانات التي إذا حدثت مشكلة في أي جزء من المعاملة يتم إلغاء التغييرات التي تمت في كل الجزء السابق
مثال
 

START TRANSACTION;

-- عمليات SQL هنا

COMMIT; -- لتأكيد التغييرات
-- أو
ROLLBACK; -- لإلغاء التغييرات

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...