TOP

درس SQL 10. ربط الجداول (INNER JOIN)

YouLibreCalc for Excel logo

أقوى ميزة في لغة SQL هي القدرة على الجمع بين جداول مختلفة في ذاكرة الوصول العشوائي لنظام إدارة قواعد البيانات (DBMS) أثناء تنفيذ الاستعلام. يتم استخدام الصلات في كثير من الأحيان لتحليل البيانات. كقاعدة عامة، تكون البيانات في جداول مختلفة، مما يسمح بتخزينها بشكل أكثر كفاءة (نظرًا لعدم تكرار المعلومات)، ويبسط معالجة البيانات، ويسمح بقياس قاعدة البيانات (من الممكن إضافة جداول جديدة بمعلومات إضافية) .

جداول قاعدة البيانات المستخدمة في DBMS MS Access هي جداول علائقية، أي أنه يمكن ربط جميع الجداول ببعضها البعض عن طريق الحقول المشتركة.


1. إنشاء مجموعة من الجداول (JOINS)

يعد دمج الجداول إجراءً بسيطًا للغاية. من الضروري تحديد كافة الجداول التي سيتم تضمينها في المجموعة و"شرح" لنظام إدارة قواعد البيانات كيفية ارتباطها ببعضها البعض. يتم الاتصال باستخدام كلمة WHERE، على سبيل المثال:

Run SQLSELECT DISTINCT Seller_name, Product 
FROM Sellers, Sumproduct 
WHERE Sellers.City = Sumproduct.City

ومن خلال الجمع بين الجدولين، تمكنا من معرفة المنتجات التي يبيعها كل بائع. دعونا نلقي نظرة فاحصة على رمز الطلب، لأنه يختلف قليلاً عن الطلب العادي. تبدأ عبارة SELECT بتحديد الأعمدة التي نريد عرضها، ولكن هذه الحقول موجودة في جداول مختلفة، تحتوي جملة FROM على جدولين نريد ضمهما في عبارة SELECT، يتم ضم الجداول باستخدام كلمة WHERE التي تحدد الأعمدة لينضم. يجب عليك تحديد الاسم الكامل للحقل (Table.Field)، لأن الحقل City موجود في كلا الجدولين.

2. التركيبة الداخلية (INNER JOIN)

في المثال السابق، استخدمنا كلمة WHERE لدمج الجداول، مما يؤدي إلى إجراء فحص بناءً على تكافؤ جدولين. يُطلق على مجموعة من هذا النوع أيضًا اسم "التركيبة الداخلية". هناك أيضًا طريقة أخرى لدمج الجداول تشير بوضوح إلى نوع المجموعة. خذ بعين الاعتبار المثال التالي:

Run SQLSELECT DISTINCT Seller_name, Product 
FROM Sellers 
INNER JOIN Sumproduct 
ON Sellers.City = Sumproduct.City

في هذا الاستعلام، بدلاً من WHERE، استخدمنا البناء INNER JOIN ... ON ...، والذي أعطى نتيجة مماثلة. على الرغم من أن الجمع مع جملة WHERE أقصر، إلا أنه لا يزال من الأفضل استخدام INNER JOIN لأنها أكثر مرونة، كما سيتم شرحه بمزيد من التفصيل في الأقسام التالية.