تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] الطرح من القيمة null و الطرح من قيمة في جدول آخر
#1
بسم الله الرحمن الرحيم


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

أعمل على vb.net وقواعد بيانات sql server

لدي مشكلة اتوقع انها بسيطة لكنها استعصت علي

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

لكن المشكلة عندما تكون إحدى القيمتين null يعطي نتيجة 0  لماذا؟؟!!

وكذلك إذا كان السجل في الجدول الأول لا يوجد له نظير في الجدول الثاني يعطي نتيجة 0 لماذا؟؟!!
الرد }}}}
تم الشكر بواسطة: أبو عمر
#2
وعليكم السلام ورحمة الله وبركاته

أمامك حلين

الأول وضع قيمة افتراضية (صفر) Default value للأعمدة الرقمية في قاعدة البيانات.

الثاني في الاستعلام يتم تحويل null إلى الرقم صفر مثل
كود :
SELECT COALESCE(column1,0) + COALESCE(column2,0) AS value
FROM table1

الحل الأول مريح عند كتابة الاستعلامات لأنه لن تكون حاجة لتحويل null


(وكذلك إذا كان السجل في الجدول الأول لا يوجد له نظير في الجدول الثاني يعطي نتيجة 0 لماذا؟؟!!) غير مفهومة
الرد }}}}
#3
null ليست قيمة
null ليست صفر
لهذا يجب التحقق من الحقل هل هو null أم لا قبل الحساب

مرجع: https://msdn.microsoft.com/en-us/library/ms188795.aspx
الرد }}}}
#4
Null = باختصار حالة عدم
كما أسلف محمد كريم هي ليست قيمة
بل هي حالة
حالة الحقل عدم لا قيمة نصية ولا عددية
للتفادى هذه المشكلة اعمل كما قال الاخ ممدوح
خصوصا الأول اذا كنت مبتديء
بالتوفيق
سبحان الله والحمدلله ولا إله إلا الله والله أكبر
 رَبِّ اغْفِرْ لِي وَلِوَالِدَيَّ
Heart
الرد }}}}
#5
شكرا للأخ ممدوح
شكرا للأخ محمد كريم
شكرا للأخ أبوعمر
افدتوني في النقطة الأولى
لكن بخصوص النقطة الثانية كيف الحل؟؟
النقطة الثانية:
وكذلك إذا كان السجل في الجدول الأول لا يوجد له نظير في الجدول الثاني يعطي نتيجة 0 لماذا؟؟!!
مثال
اذا كان عندي جدول للعملاء وفيه (رقم العميل/ اسم العميل / اجمالي المديونيات على العميل)
وعندي جدول ثاني لدفعات العملاء وفيه ( رقم الدفعة / المبلغ / رقم العميل )
طبعا الجدولين مربوطين برقم العميل
اذا كان يوجد عميل عليه مديونية ولم يسدد أي دفعة فبالتأكيد لن يكون له سجل في جدول الدفعات
وعندما نريد أن نحسب (اجمالي المديونيات على العميل - اجمالي الدفعات ) راح يعطي نتيجة خطأ لأن العميل غير موجود بالأساس في جدول دفعات العملاء
كيف اجعل البرنامج اذا ما حصل سجل للعميل في جدول الدفعات يعتبر اجمالي الدفعات (0) ؟؟
الرد }}}}
تم الشكر بواسطة:
#6
طيب لتفادي المشاكل المفروض نتحقق اولا من وجود سجلات للعميل في جدول الدفعات قبل الاستعلام عن قيمة الدفعات والتي تساوي null في هذه الحالة

في استعلامات sql يمكننا تحديد قيمة افتراضية لارجاعها في حالة عدم تحقق شرط معين داخل الاستعلام
يعني في الاستعلام لو لم يجد معاملة للعميل داخل جدول الدفعات يرجع لنا قيمة 0
وهذا ما وضحه الاخ ممدوح

ربما انت بحاجة الى التعرف على EXISTS و NOT EXISTS لتساعدك على التحكم في شروط الاستعلام


روابط قد تفيدك :
http://codereview.stackexchange.com/ques...ault-value
http://weblogs.sqlteam.com/mladenp/archi...60210.aspx
الرد }}}}
#7
شكرا لكم جزيلا
جربت COALESCE وضبطت معي بحيث إذا لم يجد تسجيل في الجدول الاخر يخصم من صفر

شكرا لكم
الرد }}}}
تم الشكر بواسطة:
#8
واجهتني مشكلة في نفس الموضوع بس عندما اعمل view من جدولين في sql server لا يقوم الview بعرض جميع السجلات بل يعرض السجلات المشتركة بين الجدولين
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كود SQL يجعل قيمة عمود تعتمد على عمود آخر starosta 0 42 30-10-16, 01:42 PM
آخر رد: starosta
  [سؤال] طريقة تحديث جدول بناء على بيانات جدول آخر sql server اليوم مبتدئة وغداً محترفة 2 117 02-10-16, 03:43 PM
آخر رد: اليوم مبتدئة وغداً محترفة
  اريد تحويل جدول في قاعدة بيانات أكسيس 2010 إلي sql Abdh111 5 300 24-06-16, 05:26 AM
آخر رد: Abdh111
  أريد تفريغ جدول به مليون صف Abdh111 6 192 05-06-16, 03:42 PM
آخر رد: khodor1985
  جمع الحقول التي قيمتها null djelloul 2 190 07-02-16, 10:02 PM
آخر رد: djelloul
  انشاء دالة ترجع جدول Fathy 5 936 15-08-13, 10:56 PM
آخر رد: Sajad
  إضافة سجلات من جدول معين الى آخر نداء 2 612 28-03-13, 02:23 PM
آخر رد: عمر المستشار

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم