عند تضمين مصادر بيانات متعددة في استعلام Access، يمكنك استخدام الصلات للحد من السجلات التي تريد رؤيتها، استنادا إلى كيفية ارتباط مصادر البيانات ببعضها البعض. يمكنك أيضا استخدام الصلات لدمج السجلات من مصدري البيانات، بحيث يصبح كل زوج من السجلات من المصادر سجلا واحدا في نتائج الاستعلام.
تتناول هذه المقالة الأنواع المختلفة من الصلات وتوضح لك كيفية استخدامها في استعلام. بشكل افتراضي، يتم إنشاء صلة تلقائيا إذا كانت هناك بالفعل علاقة بين مصدري بيانات تستخدمهما في استعلام. يتم أيضا إنشاء صلة إذا كانت هناك حقول تتوافق بوضوح مع بعضها البعض. يمكنك حذف صلة تم إنشاؤها تلقائيا. توفر هذه المقالة معلومات أساسية حول علاقات الجدول، بما في ذلك كيفية إنشاء علاقات.
ملاحظة: يمكنك ربط الاستعلامات بنفس الطريقة التي تنضم بها إلى الجداول، ويمكنك أيضا ضم كليهما.
في هذه المقالة
نظرة عامة
قاعدة البيانات هي مجموعة من جداول البيانات التي تحمل علاقات منطقية مع بعضها البعض. يمكنك استخدام العلاقات لتوصيل الجداول حسب الحقول المشتركة بينهما. يمكن أن يكون الجدول جزءا من أي عدد من العلاقات، ولكن كل علاقة تحتوي دائما على جدولين بالضبط. في استعلام، يتم تمثيل العلاقة بواسطة صلة.
عند إضافة جداول إلى استعلام، Access بإنشاء الصلات التي تستند إلى العلاقات التي تم تعريفها بين الجداول. يمكنك إنشاء الصلات يدويا في الاستعلامات، حتى إذا كانت لا تمثل العلاقات التي تم تعريفها بالفعل. إذا كنت تستخدم استعلامات أخرى (بدلا من الجداول أو بالإضافة إليها) كمصادر بيانات لاستعلام، يمكنك إنشاء الصلات بين استعلامات المصدر، وأيضا بين هذه الاستعلامات وأي جداول تستخدمها كمصادر للبيانات.
تتصرف الصلات بشكل مشابه لمعايير الاستعلام من حيث أنها تنشئ قواعد يجب أن تتطابق مع البيانات ليتم تضمينها في عمليات الاستعلام. على عكس المعايير، تحدد الصلات أيضا دمج كل زوج من الصفوف التي تفي بشروط الصلة في مجموعة السجلات لتشكيل صف واحد.
هناك أربعة أنواع أساسية من الصلات: الصلات الداخلية، والصلات الخارجية، والصلات المتقاطعة، والصلات غير المتكافئة. تستكشف هذه المقالة كل نوع من أنواع الصلات التي يمكنك استخدامها، ولماذا تستخدم كل نوع، وكيفية إنشاء الصلات.
الوصلات هي الاستعلام عن العلاقات مع الجداول: إشارة إلى كيفية دمج البيانات في مصدرين استنادا إلى قيم البيانات المشتركة بينهما. فيما يلي رسم توضيحي لصلة في طريقة عرض التصميم للاستعلام، مع فتح خصائص الصلة في مربع حوار:
يمثل هذا الخط بين الجداول الصلة. انقر نقرا مزدوجا فوق صلة لفتح مربع الحوار خصائص الانضمام (تم تصويره) ومراجعة الصلة أو تغييرها.
الصلات هي في بعض الأحيان اتجاهية. تعرض لك هذه المنطقة من مربع الحوار الجدول الموجود في الصلة والحقول المستخدمة لضم الجداول.
تحدد هذه المنطقة نوع الصلة: الخيار 1 هو صلة داخلية، و2 صلة خارجية اليسرى، و3 صلة خارجية اليسرى.
يمكن استخدام الحقول من كلا الجدولين، ويتم عرض البيانات المتعلقة بمهمة معينة من كل منها. في الصلة الداخلية، لا يتم تضمين أي بيانات أخرى. في صلة خارجية، يتم أيضا تضمين سجلات غير مرتبطة من جدول واحد في نتائج الاستعلام.
أنواع الصلات
هناك أربعة أنواع أساسية من الصلات: الصلات الداخلية، والصلات الخارجية، والصلات المتقاطعة، والصلات غير المتكافئة. الصلات المتقاطعة والصلات غير المتكافئة هي أنواع انضمام متقدمة ونادرا ما يتم استخدامها، ولكن يجب أن تعرف عنها أن يكون لديك فهم كامل لكيفية عمل الصلات.
الصلات الداخلية: البيانات ذات الصلة فقط من كلا الجدولين مجتمعة
الصلة الداخلية هي الصلة التي يتضمن فيها Access بيانات من جدول فقط إذا كانت هناك بيانات مقابلة في الجدول ذي الصلة، والعكس صحيح. في معظم الأحيان، ستستخدم الصلات الداخلية. عند إنشاء صلة ولا تحدد نوع الانضمام إليها، يفترض Access أنك تريد صلة داخلية. الصلات الداخلية مفيدة لأنها تتيح لك دمج البيانات من مصدرين استنادا إلى القيم المشتركة - لذلك لا ترى البيانات إلا عندما تكون هناك صورة كاملة.
الصلات الخارجية: جميع البيانات ذات الصلة مجتمعة بشكل صحيح، بالإضافة إلى جميع السجلات المتبقية من جدول واحد
الصلة الخارجية مثل صلة داخلية، ولكنها تضيف الصفوف المتبقية من أحد الجداول. الصلات الخارجية اتجاهية: تتضمن الصلة الخارجية اليسرى جميع السجلات من الجدول الأيسر - الجدول الأول في الصلة - ويتضمن الصلة الخارجية اليمنى جميع السجلات من الجدول الأيمن - الجدول الثاني في الصلة.
الصلات الخارجية الكاملة: جميع البيانات، مجتمعة حيثما أمكن ذلك
في بعض الأنظمة، يمكن أن تتضمن الصلة الخارجية جميع الصفوف من كلا الجدولين، مع دمج الصفوف عند مطابقتها. يسمى هذا صلة خارجية كاملة، ولا يدعمها Access بشكل صريح. ومع ذلك، يمكنك استخدام صلة مشتركة ومعايير لتحقيق نفس التأثير.
الصلات المتقاطعة: جميع البيانات، مجتمعة بكل طريقة ممكنة
في معظم الأحيان، يعد الربط المتقاطع أحد الآثار الجانبية لإضافة جدولين إلى استعلام ثم نسيان الانضمام إليهما. يفسر Access هذا على أنه يعني أنك تريد رؤية كل سجل من جدول واحد جنبا إلى جنب مع كل سجل من الجدول الآخر - كل مجموعة ممكنة من السجلات. نظرا لأنه لا يمكن دمج أي بيانات، نادرا ما ينتج عن هذا النوع من الربط نتائج مفيدة. ولكن هناك بعض الحالات التي يكون فيها الربط المتقاطع هو ما تحتاجه.
الصلات غير المتكافئة: مثل الصلة العادية، ولكن باستخدام مقارنة مختلفة لدمج الصفوف
تستخدم الصلات غير المتكافئة عامل تشغيل غير علامة المساواة (=) لمقارنة القيم وتحديد ما إذا كان يجب دمج البيانات وكيفية دمجها. لا يتم دعم الصلات غير المتكافئة بشكل صريح، ولكن يمكنك استخدام صلة مشتركة ومعايير لتحقيق نفس التأثير.
إظهار الصفوف التي توجد فيها قيمة شائعة في كلا الجدولين المنضمين
إذا كنت تريد إظهار الصفوف التي تحتوي على قيم مطابقة فقط في الحقل المنضم، يمكنك استخدام صلة داخلية. ينشئ Access الصلات الداخلية تلقائيا.
الصلات الداخلية هي النوع الأكثر شيوعاً من الصلات. يخبرون استعلاما أن الصفوف من أحد الجداول المنضمة تتوافق مع الصفوف في الجدول الآخر، على أساس البيانات الموجودة في الحقول المنضمة. عند تشغيل استعلام ذي صلة داخلية، سيتم تضمين الصفوف التي توجد فيها قيمة شائعة في كلا الجدولين المنضمين فقط في عمليات الاستعلام.
كيف أعمل استخدام صلة داخلية؟
في معظم الأحيان، لا تحتاج إلى القيام بأي شيء لاستخدام صلة داخلية. إذا كانت الجداول التي تضيفها إلى استعلام لها علاقات بالفعل، فسينشئ Access تلقائيا صلة داخلية بين كل زوج من الجداول ذات الصلة، عند إضافة الجداول. إذا تم فرض تكامل مرجعي، يعرض Access أيضاً "1" فوق خط الصلة للإشارة إلى الجدول الموجود في ناحية "الرأس" في علاقة واحد لأكثر ورمز لا نهاية (∞) لإظهار أي جدول موجود في ناحية "الأطراف".
حتى إذا لم تكن قد أنشأت علاقات، يقوم Access تلقائيا بإنشاء الصلات الداخلية إذا أضفت جدولين إلى استعلام وكان لكل منهما حقل بنفس نوع البيانات أو نوع بيانات متوافق، وأحد حقول الصلة هو مفتاح أساسي. لا يتم عرض الرمزين "واحد" و"متعدد" في هذه الحالة، لأنه لا يتم فرض التكامل المرجعي.
إذا أضفت استعلامات إلى استعلامك، ولم تقم بإنشاء علاقات بين هذه الاستعلامات، فلن يقوم Access تلقائيا بإنشاء الصلات الداخلية بين هذه الاستعلامات أو بين الاستعلامات والجداول. بشكل عام، يجب عليك إنشاؤها بنفسك. يمكنك إنشاء صلة داخلية عن طريق سحب حقل من مصدر بيانات إلى حقل على مصدر بيانات آخر. يعرض Access خطاً بين الحقلين لإظهار أنه قد تم إنشاء صلة.
بناء جملة SQL لصلة داخلية
يتم تحديد الصلات الداخلية في SQL في عبارة FROM، كما هو موضح أدناه:
FROM table1 INNER JOIN table2 ON table1.field1 compare table2.field2
تتكون عملية INNER JOIN "الصلة الداخلية" من الأجزاء التالية:
الجزء |
الوصف |
table1 وtable2 |
أسماء الجداول التي يتم ضم السجلات منها. |
field1 وfield2 |
أسماء الحقول المنضمة. إذا لم تكن الحقول رقمية، يجب أن تكون من نفس نوع البيانات وأن تحتوي على نفس نوع البيانات، ولكن يجب ألا يكون لها نفس الاسم. |
مقارنه |
أي عامل تشغيل مقارنة ارتباطي: "=" أو "<" أو ">" أو "<=" أو ">=" أو"<>". |
لمزيد من المعلومات حول بناء جملة الصلة الداخلية، راجع الموضوع عملية INNER JOIN.
إظهار كافة الصفوف من جدول واحد والصفوف المقابلة من الجدول الآخر
تخبر الصلات الخارجية استعلاما أنه على الرغم من أن بعض الصفوف على جانبي الصلة تتوافق تماما، يجب أن يتضمن الاستعلام جميع الصفوف من جدول واحد، وكذلك تلك الصفوف من الجدول الآخر التي تشترك في قيمة مشتركة على جانبي الصلة.
يمكن أن تكون الصلات الخارجية الصلات الخارجية اليسرى أو يمكن أن تكون الصلات الخارجية اليمنى. في الصلة الخارجية اليسرى، يتضمن الاستعلام جميع الصفوف من الجدول الأول في عبارة SQL FROM، وتلك الصفوف فقط من الجدول الآخر حيث يحتوي حقل الانضمام على قيم مشتركة لكلا الجدولين. في الصلة الخارجية اليمنى، يتضمن الاستعلام جميع الصفوف من الجدول الثاني في عبارة SQL FROM، وتلك الصفوف فقط من الجدول الآخر حيث يحتوي حقل الانضمام على قيم مشتركة لكلا الجدولين.
ملاحظة: يمكنك بسهولة معرفة الجدول الموجود في الجدول الأيسر أو الجدول الأيمن في صلة معينة بالنقر نقرا مزدوجا فوق الصلة ثم البحث في مربع الحوار خصائص الصلة . يمكنك أيضا التبديل إلى طريقة عرض SQL، ثم فحص عبارة FROM.
نظرا لأن بعض الصفوف الموجودة على جانب واحد من الصلة الخارجية لن تحتوي على صفوف مقابلة من الجدول الآخر، فإن بعض الحقول التي تم إرجاعها في نتائج الاستعلام من هذا الجدول الآخر ستكون فارغة عندما لا تتوافق الصفوف.
كيف أعمل استخدام صلة خارجية؟
يمكنك إنشاء صلة خارجية عن طريق تعديل صلة داخلية موجودة. إذا لم يكن هناك صلة داخلية، يمكنك إنشاء صلة، ثم تغييرها إلى صلة خارجية.
تغيير صلة داخلية إلى صلة خارجية
-
في طريقة عرض تصميم الاستعلام، انقر نقرا مزدوجا فوق الصلة التي تريد تغييرها.
يظهر مربع الحوار خصائص الصلة.
-
في مربع الحوار خصائص الانضمام ، لاحظ الخيارات المدرجة بجانب الخيار 2 والخيار 3.
-
انقر فوق الخيار المراد استخدامه، ثم فوق موافق.
-
يعرض Access الصلة ويعرض سهم يشير من مصدر البيانات حيث سيتم تضمين جميع الصفوف في مصدر البيانات حيث سيتم تضمين تلك الصفوف التي تفي بشرط الصلة فقط.
الصلات الخارجية الغامضة
إذا قمت بإنشاء استعلام يحتوي على LEFT JOIN و INNER JOIN، فقد لا يتمكن Access من تحديد عملية الصلة التي يجب تنفيذها أولا. نظرا لأن النتائج مختلفة اعتمادا على ما إذا كان يتم تنفيذ الصلة اليسرى أو الصلة الداخلية أولا، يعرض Access رسالة خطأ:
لتصحيح هذا الخطأ، يجب تعديل الاستعلام بحيث يكون واضحا الصلة التي يجب تنفيذها أولا.
بناء جملة SQL لصلة خارجية
يتم تحديد الصلات الخارجية في SQL في عبارة FROM، كما هو موضح أدناه:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 compare table2.field2تتكون عمليتا LEFT JOIN وRIGHT JOIN من الأجزاء التالية:
الجزء |
الوصف |
table1 وtable2 |
أسماء الجداول التي يتم ضم السجلات منها. |
field1 وfield2 |
أسماء الحقول المنضمة. يجب أن تكون الحقول من نفس نوع البيانات ويجب أن تحتوي على نفس نوع البيانات، ولكن يجب ألا يكون لها نفس الاسم. |
مقارنه |
أي عامل تشغيل مقارنة ارتباطي: "=" أو "<" أو ">" أو "<=" أو ">=" أو"<>". |
لمزيد من المعلومات حول بناء جملة الصلة الخارجية، راجع الموضوع LEFT JOIN، عمليات RIGHT JOIN.
إظهار كافة الصفوف من كلا الجدولين، وضمها حيث توجد قيمة شائعة
عندما تريد إظهار كافة الصفوف من جدولين وضمها استنادا إلى القيم الشائعة، يمكنك استخدام صلة خارجية كاملة. لا يدعم Access بشكل صريح الصلات الخارجية الكاملة، ولكن يمكنك تحقيق نفس التأثير باستخدام استعلام موحد. يوضح الإجراء التالي كيفية القيام بذلك، ولكن إذا كنت تريد المزيد من المعلومات حول استعلامات الاتحاد، فراجع القسم انظر أيضا .
لاستخدام استعلام موحد لتنفيذ صلة خارجية كاملة:
-
أنشئ استعلاما يحتوي على صلة خارجية اليسرى في الحقل الذي تريد استخدامه لصلة خارجية كاملة.
-
على علامة التبويب الصفحة الرئيسية، في المجموعة طرق العرض، انقر فوق طريقة عرض، ثم فوق طريقة عرض SQL.
-
اضغط على CTRL+C لنسخ التعليمات البرمجية SQL.
-
احذف الفاصلة المنقطة في نهاية عبارة FROM، ثم اضغط على ENTER.
-
اكتب UNION، ثم اضغط على مفتاح الإدخال Enter.
ملاحظة: لا تستخدم الكلمة الأساسية ALL عند استخدام استعلام موحد لتنفيذ صلة خارجية كاملة.
-
اضغط على CTRL+V للصق التعليمات البرمجية SQL التي نسختها في الخطوة 3.
-
في التعليمات البرمجية التي قمت بللصقها، قم بتغيير LEFT JOIN إلى RIGHT JOIN.
-
احذف الفاصلة المنقطة في نهاية عبارة FROM الثانية، ثم اضغط على ENTER.
-
أضف عبارة WHERE التي تحدد أن قيمة حقل الصلة هي NULL في الجدول الأول المدرج في عبارة FROM (الجدول الأيسر).
على سبيل المثال، إذا كانت عبارة FROM هي:
FROM Products RIGHT JOIN [Order Details]
ON Products.ID = [Order Details].[Product ID]يمكنك إضافة عبارة WHERE التالية:
WHERE Products.ID IS NULL
-
اكتب فاصلة منقوطة (;) في نهاية عبارة WHERE للإشارة إلى نهاية الاستعلام الموحد.
-
على علامة التبويب تصميم، في مجموعة النتائج، انقر فوق تشغيل.
الصلات المتقاطعة
تختلف الصلات المتقاطعة عن الصلات الداخلية والخارجية من حيث أنها غير ممثلة بشكل صريح في Access. في الصلة المتقاطعة، يتم دمج كل صف من جدول واحد مع كل صف من جدول آخر، مما يؤدي إلى ما يسمى منتجا متقاطعا أو منتجا الديكارتية. في أي وقت تقوم فيه بتشغيل استعلام يحتوي على جداول غير مرتبطة بشكل صريح، يكون المنتج المتقاطع هو النتيجة. عادة ما تكون الصلات المتقاطعة غير مقصودة، ولكن هناك حالات يمكن أن تكون فيها مفيدة.
لماذا أستخدم صلة متقاطعة؟
إذا كنت تريد فحص كل مجموعة ممكنة من الصفوف بين جدولين أو استعلامات، فاستخدم ربطا متقاطعا. على سبيل المثال، افترض أن نشاطك التجاري قد شهد عاما مذهلا، وأنك تفكر في منح خصومات لعملائك. يمكنك إنشاء استعلام يجمع مشتريات كل عميل، وإنشاء جدول صغير يحتوي على عدة نسب مئوية محتملة للخصومات، ودمج الاثنين في استعلام آخر يقوم بإجراء ربط متقاطع. ينتهي بك الأمر باستعلام يعرض مجموعة من الخصومات الافتراضية لكل عميل.
كيف أعمل استخدام صلة متقاطعة؟
يتم إنتاج صلة متقاطعة في أي وقت تقوم فيه بتضمين جداول أو استعلامات في استعلامك ولا تنشئ صلة صريحة واحدة على الأقل لكل جدول أو استعلام. يجمع Access بين كل صف من كل جدول أو استعلام غير مرتبط بشكل صريح بأي جدول أو استعلام آخر إلى كل صف آخر في النتائج. ضع في اعتبارك سيناريو الخصم من الفقرة السابقة. افترض أن لديك 91 عميلا، وأنك تريد إلقاء نظرة على خمس نسب مئوية محتملة للخصومات. تنتج الصلة المتقاطعة 455 صفا (منتج 91 و5).
كما قد تتخيل، يمكن أن تنشئ الصلات المتقاطعة غير المقصودة أعدادا هائلة من الصفوف في نتائج الاستعلام. علاوة على ذلك، هذه النتائج لا معنى لها بشكل عام، لأنه إذا كنت لا تنوي دمج كل صف مع كل صف آخر، فإن معظم الصفوف المجمعة التي تظهر في النتائج لن تكون منطقية. وأخيرا، يمكن أن تستغرق الاستعلامات التي تستخدم الصلات المتقاطعة غير المقصودة وقتا طويلا جدا للتشغيل.
1. يجب ربط الحقول الدائرية ببعضها البعض.
1. لاحظ العدد الكبير جدا من السجلات.
1. لاحظ أن عدد السجلات أصغر بكثير.
ربط الجداول استنادا إلى عدم المساواة في قيم الحقول
لا يجب أن تستند الصلات إلى تكافؤ الحقول المنضمة. يمكن أن يستند الربط إلى أي عامل مقارنة، مثل أكبر من (>)، أو أقل من (<)، أو لا يساوي (<>). تسمى الصلات التي لا تستند إلى التكافؤ الصلات غير المتكافئة.
إذا كنت تريد دمج صفوف مصدرين للبيانات استنادا إلى قيم الحقول غير المتساوية، يمكنك استخدام صلة غير متساوية. عادة ما تستند الصلات غير المتكافئة إلى عوامل المقارنة الأكبر من (>) أو أقل من (<) أو أكبر من أو يساوي (>=) أو أقل من أو يساوي (<=). يمكن أن ترجع الصلات غير المتساوية التي تستند إلى عامل التشغيل لا يساوي (<>) ما يقرب من عدد الصفوف مثل الصلات المتقاطعة، وقد يكون من الصعب تفسير النتائج.
كيف أعمل استخدام صلة غير متساوية؟
لا يتم دعم الصلات غير المتكافئة في طريقة عرض التصميم. إذا كنت ترغب في استخدامها، يجب عليك القيام بذلك باستخدام طريقة عرض SQL. ومع ذلك، يمكنك إنشاء صلة في طريقة عرض التصميم، والتبديل إلى طريقة عرض SQL، والعثور على عامل المقارنة يساوي (=)، وتغييره إلى عامل التشغيل الذي تريد استخدامه. بعد القيام بذلك، يمكنك فقط فتح الاستعلام في طريقة عرض التصميم مرة أخرى إذا قمت أولا بتغيير عامل المقارنة مرة أخرى إلى يساوي (=) في طريقة عرض SQL.
حذف صلة
إذا قام Access تلقائيا بإنشاء صلة لا تريدها، أو إذا قمت بإنشاء صلة عن طريق الخطأ — على سبيل المثال، صلة بين حقلين يحتويان على أنواع بيانات غير متباينة — فيمكنك حذف الصلة.
-
في شبكة تصميم الاستعلام، انقر فوق الصلة التي تريد إزالتها.
-
اضغط على DELETE.
-أو-
-
في شبكة تصميم الاستعلام، انقر بزر الماوس الأيمن فوق الصلة التي تريد إزالتها، ثم انقر فوق حذف.