اخذنا سابقاً الربط البسيط يمكنك قراءته من
الرابط التالي كما يمكنك قراءة بقية الدروس من الروابط التالية ايضاً
اليوم ناخذ الربط بالتساوي :
يُعرّف الربط بالتساوي على انه الربط البسيط بين
سجلات جدول اول وسجلات جدول ثاني اعتماداً على مساواة بين قيمتي حقل سجل من الجدول
الاول وقيمة حقل في سجل من الجدول الثاني .
وتكتب صيغته كالتالي :
Select
Table1.Column1, Table1.Column2, Table2.Column3
From Table1, Table2
where Table1.Column1 = Table2.Column2;
لاحظ اننا استخدمنا علامة التساوي من الجدول
الاول Table1.Column1
والحقل الثاني من الجدول الثاني Table1.Column2 مما يعني ان عملية الربط لا تستخدم بالضرورة
نفس الحقول التي يجب ان يعيدها الاستعلام .
كما يمكن الحصول على نفس النتيجة بإستخدام الصيغة
التالية
Select
Table1.Column1, Table1.Column2, Table2.Column3
From Table1
Join Table2
ON Table1.Column1 =
Table2.Column2;
مثال :
لنفرض انه لدينا الجدول Names الذي
يحتوي على اسماء جميع الاشخاص المقيمين في قرية مع ارقامهم التأمينية INumber
والجدول Addresses
الذي يحتوي على عناوين المنازل في تلك القرية مع الرقم التأميني للمقيم في المنزل
واردنا كتابة الاستعلام الذي يعيد
قائمة بأسماء الأشخاص وعناوينهم، يمكننا استخدام الصيغة:
Select Names.name,
Addresses.address from Names, Addresses
Where Names.INumber
= Addresses.INumber;
او
Select Names.name, Addresses.address
From Names
Join Addresses
ON Names.INumber =
Addresses.INumber;
استخدام الربط بالتساوي مع عدة جداول :
امكانيات الربط بالتساوي لا تتوقف عند حدود الربط
بين جدولين فقط بل يمكن استخدامها لعدة جداول ولكي نستخدم الربط بالتساوي لعدة
جداول نستخدم الصيغة التالية :
Select
Table1.Column1, Table2.Column2, Table3.Column4
From Table1 Join
Table2
ON Table1.Column1 =
Table2.Column2
Join Table3
ON Table1.Column3 =
Table3.Column4;
في الصيغة السابقة يتم الربط بين الجداول
اعتماداً على اسماء الحقول المتساوية المحددة بعد الكلمة ON .
مثال:
لنفرض انه لدينا الجدول Customers
الذي يحتوي على رمز الزبون customerID اسمة customerName
والجدول CreditCards
الذي يحتوي على رقم بطاقة الزبون الائتمانية cardNumber
وعلى رقمة customerID
والجدول Addresses
الذي يحتوي على عناوين الزبائن وكان المطلوب اعادة قائمة برقم الزبون واسمة ورقم
بطاقتة الائتمانية والبلد الذي يقيم فيه country
للحصول على المطلوب نكتب الاستعلام التالي :
Select
Customers.customerID, Customers.customerName,
CreditCards.cardNumber,
Addresses.country
From Customers
Join CreditCards
ON
Customers.customerID = CreditCards.customerID
Join Addresses
ON Customers.customerID
= Addresses.customerID;
لاحظ قد لا تعمل الصيغة السابقة على نظام MS Access
لذلك يفضل البعض استخدام تقنية الربط المتساوي المتداخل أي استخدام الصيغة التالية
:
Select
Table1.Column1, Table2.Column2, Table3.Column4
From Table2
Inner Join
(Table3 Inner Join
Table1 ON Table3.Column4 = Table1.Column1)
ON Table2.Column2 =
Table1.Column1;
هذه
الصيغة تشبه تلك التي
استخدمناها في الشريحة السابقة لكن MS Access يواجه صعوبة عند
ترجمة عمليات الربط
بصورة مباشرة لذلك
لجأنا إلى توليد
بنى ربط متداخلة مجمعة بأقواس فكما نلاحظ
قمنا بربط الجدول Table مع
الجدول Table1
بتساوي
الحقلين Column4
من
الجدول Table3
مع
الحقل Column1
من
الجدول Table1
ثم
تعاملنا مع التعبير كاملا كطرف في عملية الربط
مع الجدول Table2
بتساوي
الحقل Column2
من
الجدول Table2
مع الحقل column1
من الجدول table1
.
مثال:
إذا
كان لدينا مخزن
ألبسة يعتمد قاعدة
بيانات تحتوي ثلاثة
جداول:
الأول جدول الأقسام Sectors (ولادي- نسائي- سن
محير) الذي يحتوي على
رمز القسم sectorID
واسم القسم sectorName
والثاني
جدول الفصول Seasons
الذي
يحتوي رمز الفصول والسنوات (خريف 2004 – شتاء
2003)
seasonID
وأسمائها seasonInfo والثالث جدول المنتجات Products الذي
يحتوي على الارقام التسلسلية للقطع productID ووصفها productDescription
واسعارها productPrice
ورمز القسم seasonID
ورمز القسم sectorID
الذي تتبع له .
المطلوب اظهار قائمة بمواصفات القطع واسعارها
والاقسام التي تتبع لها والقسم الخاص بها .
الحل :
Select
productDescription, productPrice, seasonName, sectorName
From Sectors
Inner Join
(Seasons Inner Join
Products ON Seasons.seasonID = Products.seasonID)
ON Sectors.sectorID
= Products.sectorID;
قد لا تعمل الصيغة السابقة مع MS Access
لذلك يفضل استخدام تقنية الربط المتساوي المتداخل .
اكتفي بهذا القدر ونلتقي في التدوينة القادمة
والتي تحمل العنوان الربط باللامساواه ...
لا تنسى الاشتراك في مدونتنا ليصلك كل جديدنا او
الاعجاب بصفحتنا على الفيس بوك كذلك قناتنا على اليوتيوب والتي تحتوي على شروحات
متنوعة في دروس متنوعة في الكمبيوتر وفي الرياضيات وشروحات لبرامج وشروحات لحل
مشاكل ...
إرسال تعليق
لا تبخل علينا باقتراحك او قم بمشاركة الموضوع ليستفيد الاخرين ايضاً شكرا لزيارتك عزيزي الزائر