منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] الطرح من القيمة null و الطرح من قيمة في جدول آخر - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم أسئلة واستفسارات الأعضاء - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=94)
+--- قسم : Microsoft SQL Server (http://vb4arb.com/vb/forumdisplay.php?fid=171)
+--- الموضوع : [سؤال] الطرح من القيمة null و الطرح من قيمة في جدول آخر (/showthread.php?tid=17546)



الطرح من القيمة null و الطرح من قيمة في جدول آخر - اليوم مبتدئة وغداً محترفة - 04-10-16

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


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

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

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

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

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

وكذلك إذا كان السجل في الجدول الأول لا يوجد له نظير في الجدول الثاني يعطي نتيجة 0 لماذا؟؟!!



RE: الطرح من القيمة null و الطرح من قيمة في جدول آخر - ممدوح - 04-10-16

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

أمامك حلين

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

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

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


(وكذلك إذا كان السجل في الجدول الأول لا يوجد له نظير في الجدول الثاني يعطي نتيجة 0 لماذا؟؟!!) غير مفهومة


RE: الطرح من القيمة null و الطرح من قيمة في جدول آخر - محمد كريّم - 04-10-16

null ليست قيمة
null ليست صفر
لهذا يجب التحقق من الحقل هل هو null أم لا قبل الحساب

مرجع: https://msdn.microsoft.com/en-us/library/ms188795.aspx


RE: الطرح من القيمة null و الطرح من قيمة في جدول آخر - أبو عمر - 04-10-16

Null = باختصار حالة عدم
كما أسلف محمد كريم هي ليست قيمة
بل هي حالة
حالة الحقل عدم لا قيمة نصية ولا عددية
للتفادى هذه المشكلة اعمل كما قال الاخ ممدوح
خصوصا الأول اذا كنت مبتديء
بالتوفيق


RE: الطرح من القيمة null و الطرح من قيمة في جدول آخر - اليوم مبتدئة وغداً محترفة - 04-10-16

شكرا للأخ ممدوح
شكرا للأخ محمد كريم
شكرا للأخ أبوعمر
افدتوني في النقطة الأولى
لكن بخصوص النقطة الثانية كيف الحل؟؟
النقطة الثانية:
وكذلك إذا كان السجل في الجدول الأول لا يوجد له نظير في الجدول الثاني يعطي نتيجة 0 لماذا؟؟!!
مثال
اذا كان عندي جدول للعملاء وفيه (رقم العميل/ اسم العميل / اجمالي المديونيات على العميل)
وعندي جدول ثاني لدفعات العملاء وفيه ( رقم الدفعة / المبلغ / رقم العميل )
طبعا الجدولين مربوطين برقم العميل
اذا كان يوجد عميل عليه مديونية ولم يسدد أي دفعة فبالتأكيد لن يكون له سجل في جدول الدفعات
وعندما نريد أن نحسب (اجمالي المديونيات على العميل - اجمالي الدفعات ) راح يعطي نتيجة خطأ لأن العميل غير موجود بالأساس في جدول دفعات العملاء
كيف اجعل البرنامج اذا ما حصل سجل للعميل في جدول الدفعات يعتبر اجمالي الدفعات (0) ؟؟


RE: الطرح من القيمة null و الطرح من قيمة في جدول آخر - محمد كريّم - 04-10-16

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

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

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


روابط قد تفيدك :
http://codereview.stackexchange.com/questions/74192/select-first-value-if-exists-otherwise-select-default-value
http://weblogs.sqlteam.com/mladenp/archive/2007/05/18/60210.aspx


RE: الطرح من القيمة null و الطرح من قيمة في جدول آخر - اليوم مبتدئة وغداً محترفة - 05-10-16

شكرا لكم جزيلا
جربت COALESCE وضبطت معي بحيث إذا لم يجد تسجيل في الجدول الاخر يخصم من صفر

شكرا لكم


RE: الطرح من القيمة null و الطرح من قيمة في جدول آخر - اليوم مبتدئة وغداً محترفة - 07-10-16

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