الجزء
ال12: الربط المتقدم
Advanced or Intelligent Join
في الجزء ال11, شرحنا ماهو الربط Joins وكيف
نستخدمه وماهي انواعه, في هذا الجزء مكمل للجزء ال11, سنتطرق لكيفية استرجاع
البيانات من الجداول التي بينها قيم غير مشتركة فقط! سواء كان الجدول على اليمين
او على اليسار أو كلا الجدولين كالأتي:
جدول الموظفين tblEmployees لأحظ من
المعرف 9 ولغاية 1012 لم تحدد لهم قيمة الCityID
وفي جدول المدن tblCity حقل ال5 غير
مربوط بأي موظف
السؤال هنا اريد استعادة فقط
الموظفين الذين لم تحدد لهم قيمة المدينة؟
الجواب:
اول شيء للتوضيح فقط حتى الصورة
تكون واضحة, يجب استعادة كافة الموظفين مع رقم معرف المدينة :
ملاحظة: استخدمت هنا الأحرف e , c لتسمية
الجداول لغرض السهولة بدل من كتابة اسم الجدول في فقرة الON , وكذلك اذا
لاحظت في فقرة الSELECT استخدمت اسم المستعار لجدول المدن وهو الc مع المعرف ID لماذا؟ لأن
بين الجدولين يوجد معرفين ID في جدول الموظفين وفي جدول المدن, ولتفادي
هذا النوع من الغموض قمت بتحديد المعرف بأنه تابع لجدول المدن عن طريق المختصر حرف
c, ولايجب
وضعه داخل قطع الأقواس []
ملاحظة: قمت بأظهار الCityID من جدول
الموظفين والذي هو FK يشير الى PK للID في جدول
المدن .
فبهذا نأتي الى الجواب النهائي فقط
وبكل سهولة استخدم فقرة الWHERE فبذلك يمكن فلترة الموظفين الذين لم تحدد
مدينة لهم عن طريق اما CityID او الID يساوي القيمة الملغية NULL كالأتي:
ملاحظة: لمقارنة مع القيمة الباطلة NULL لا تستخدم
رمز اليساوي( = ), انما قم بأستخدام الكلمة المفتاحية IS
مثال اخر: اريد المدن من كل
الموظفين الذين لم تحدد لهم؟
الجواب:
مثال اخير: اريد كل الموظفين الذين
لم تحدد لهم اسم المدينة, مع كل المدن التي لم تحدد للموظفين؟
الجواب:
Comments
Post a Comment