وصل الجداول والاستعلامات

عندما تقوم بتضمين مصادر بيانات متعددة في استعلام 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 Operation.

أعلى الصفحة

إظهار كافة الصفوف من جدول واحد والصفوف المناظرة من الجدول الآخر

تخبر جهات خارجية الاستعلام أنه على الرغم من أن بعض الصفوف على جانبي الضم تتوافق تماما، إلا أنه يجب أن يتضمن الاستعلام كل الصفوف من جدول، وكذلك الصفوف من الجدول الآخر التي تشارك قيمة مشتركة على جانبي الضم.

يمكن أن تكون هذه هي ضمات خارجية يسرى أو قد تكون ضما خارجيا يمنا. في ضمة خارجية يسرى، يتضمن الاستعلام كافة الصفوف من الجدول الأول في عبارة SQL FROM، وتلك الصفوف فقط من الجدول الآخر حيث يحتوي حقل الضم على القيم المشتركة في الجدولين. في ضمة خارجية يمنا، يتضمن الاستعلام كافة الصفوف من الجدول الثاني في عبارة SQL FROM، وتلك الصفوف فقط من الجدول الآخر حيث يحتوي حقل الضم على القيم المشتركة في الجدولين.

ملاحظة: يمكنك بسهولة معرفة الجدول الذي يكون الجدول الأيسر أو الجدول المناسب في ضمة معينة بالنقر نقرا مزدوجا فوق الضم ثم البحث في مربع الحوار "خصائص الضم". يمكنك أيضا التبديل إلى طريقة عرض SQL، ثم معاينة عبارة FROM.

لأن بعض الصفوف على أحد جانبي الصلة الخارجية لن يكون لها صفوف مقابلة من الجدول الآخر، فإن بعض الحقول التي يتم إرجاعها في الاستعلام ستكون فارغة من ذلك الجدول الآخر عندما لا تتوافق الصفوف.

كيف يمكنني استخدام ضمة خارجية؟

يمكنك إنشاء ضمة خارجية عن طريق تعديل ضم داخلي موجود. إذا لم تكن هناك أية ضمة داخلية، يمكنك إنشاء واحدة، ثم تغييرها إلى ضمة خارجية.

تغيير ضم داخلي إلى ضمة خارجية

  1. في طريقة عرض تصميم الاستعلام، انقر نقرا مزدوجا فوق الانضمام الذي تريد تغييره.

    يظهر مربع الحوار خصائص الصلة.

  2. في مربع الحوار "خصائص الضم"، لاحظ الاختيارات المدرجة بجانب الخيارين 2و3.

  3. انقر فوق الخيار المراد استخدامه، ثم فوق موافق.

  4. يعرض Access الصلة ويعرض سهم يشير إلى مصدر البيانات حيث سيتم تضمين كل الصفوف في مصدر البيانات حيث سيتم تضمين الصفوف التي تفي بشرط الصلة فقط.

ضمات خارجية مبهمة

إذا قمت بإنشاء استعلام يحتوي على LEFT JOIN و INNER JOIN، فقد لا يتمكن Access من تحديد عملية الانضمام التي يجب تنفيذها أولا. نظرا لأن النتائج مختلفة استنادا إلى ما إذا كان يتم تنفيذ الضم الأيسر أو الخاصية الداخلية أولا، يعرض Access رسالة خطأ:

لتصحيح هذا الخطأ، يجب تعديل الاستعلام بحيث يكون واضحا أي ضمة يجب تنفيذها أولا.

بناء جملة SQL لضمة خارجية

يتم تحديد الضمات الخارجية في SQL في عبارة FROM، كما هو موضح أدناه:

FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 مقارنة table2.field2

تتكون عمليتا LEFT JOIN وRIGHT JOIN من الأجزاء التالية:

الجزء

الوصف

table1 وtable2

أسماء الجداول التي يتم ضم السجلات منها.

field1 وfield2

أسماء الحقول المنضمة. يجب أن تكون الحقول من نفس نوع البيانات ويجب أن تحتوي على نفس نوع البيانات، ولكن يجب ألا يكون لها نفس الاسم.

مقارنة

أي عامل تشغيل مقارنة ارتباطي: "=" أو "<" أو ">" أو "<=" أو ">=" أو"<>".

لمزيد من المعلومات حول بناء جملة الصلة الخارجية، راجع الموضوع LEFT JOIN، عمليات RIGHT JOIN.

أعلى الصفحة

إظهار كافة الصفوف من الجدولين، وضمها في مكان وجود قيمة مشتركة

عندما تريد عرض كل الصفوف من جدولين وضمها بالاستناد إلى قيم مشتركة، يمكنك استخدام ضم خارجي كامل. لا يدعم Access بشكل صريح ضما خارجيا كاملا، ولكن يمكنك تحقيق التأثير نفسه باستخدام استعلام اتحاد. يشرح الإجراء التالي كيفية القيام بذلك، ولكن إذا كنت تريد الحصول على مزيد من المعلومات حول الاستعلامات الاتحاد، فشاهد القسم "انظر أيضا".

لاستخدام استعلام اتحاد لتنفيذ ضمة خارجية كاملة:

  1. أنشئ استعلاما له ضمة خارجية يسرى في الحقل الذي تريد استخدامه للحصول على ضمة خارجية كاملة.

  2. على علامة التبويب الصفحة الرئيسية، في المجموعة طرق العرض، انقر فوق طريقة عرض، ثم فوق طريقة عرض SQL.

  3. اضغط على CTRL+C لنسخ رمز SQL.

  4. احذف هذه الفقرة منزهة في نهاية عبارة FROM، ثم اضغط على ENTER.

  5. اكتب UNION، ثم اضغط على مفتاح الإدخال Enter.

    ملاحظة: لا تستخدم الكلمة الأساسية ALL عند استخدام استعلام اتحاد لتنفيذ الصلة الخارجية الكاملة.

  6. اضغط على CTRL+V للصق رمز SQL الذي نسخته في الخطوة 3.

  7. في التعليمة البرمجية التي قمت بلصقها، غير LEFT JOIN إلى RIGHT JOIN.

  8. احذف هذه الفقرة من شبه احذفها في نهاية عبارة FROM الثانية، ثم اضغط على ENTER.

  9. أضف عبارة WHERE التي تحدد أن قيمة حقل الضم فارغة في الجدول الأول المدرج في عبارة FROM (الجدول الأيسر).

    على سبيل المثال، إذا كانت عبارة FROM هي:

    FROM Products RIGHT JOIN [Order Details] 
    ON Products.ID = [Order Details].[Product ID]

    يمكنك إضافة عبارة WHERE التالية:

    WHERE Products.ID IS NULL

  10. اكتب فاتاة منصفة (;) في نهاية عبارة WHERE للإشارة إلى نهاية الاستعلام التوحيدي.

  11. على علامة التبويب تصميم، في مجموعة النتائج، انقر فوق تشغيل.

الضم المتقاطع

تختلف الضمات المتقاطعة عن الضميات الداخلية والخارجية من حيث أنها غير ممثلة بشكل واضح في Access. في التضمين العرضي، يتم دمج كل صف من جدول واحد مع كل صف من جدول آخر، مما ينتج عنه ما يسمى بالمنتج العرضي أو المنتج الديكارتي. في أي وقت تقوم فيه بتشغيل استعلام به جداول غير منضمة بشكل واضح، يكون الناتج نتيجة المنتج المتقاطع. عادة ما تكون الضمات المتقاطعة غير مقصودة، ولكن هناك حالات حيث يمكن أن تكون مفيدة.

لماذا أستخدم الإنضمام المتقاطع؟

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

كيف يمكنني استخدام الضم المتقاطع؟

يتم إنشاء ضم تتقاطع في أي وقت تقوم فيه بتضمين جداول أو استعلامات في الاستعلام ولا تنشئ ضما واضحا واحدا على الأقل لكل جدول أو استعلام. يقوم Access بدمج كل صف من كل جدول أو استعلام غير منضم بشكل واضح إلى أي جدول أو استعلام آخر إلى كل صف آخر في النتائج. فكر في سيناريو الخصم من الفقرة السابقة. لنفترض أن لديك 91 عميلا، وأنك تريد النظر في خمس نسب مئوية محتملة لخصومات. ينتج عن ضمك المتقاطع 455 صفا (ناتج 91 و5).

كما تخيلت، يمكن أن تنشئ عمليات الضم المتقاطعة غير المقصودة عددا كبيرا من الصفوف في نتائج الاستعلام. علاوة على ذلك، لا معنى لهذه النتائج بشكل عام، لأنك إذا لم تكن تنوي دمج كل صف مع كل صف آخر، فإن معظم الصفوف المدمجة التي تظهر في النتائج لن تكون ذات معنى. وأخيرا، قد يستغرق تشغيل الاستعلامات التي تستخدم ضما غير مقصودة وقتا طويلا جدا.

صلة مشتركة غير مقصودة في طريقة العرض "تصميم" الخاصة بالاستعلام

1. يجب أن تكون الحقول المدائرة منضمة إلى بعضها البعض.

حاصل الضرب المشترك غير المقصود

1. لاحظ العدد الكبير جدا من السجلات.

نتيجة الاستعلام الذي تم تصحيحه

1. لاحظ أن عدد السجلات أصغر بكثير.

أعلى الصفحة

ضم الجداول استنادا إلى قيم الحقل غير المنضمة

لا يجب أن تستند الضميات إلى معادلة الحقول المنضمة. يمكن أن تستند الضم إلى أي عامل مقارنة، مثل أكبر من (>) أو أقل من (<) أو لا تساوي (<>). تسمى الضمات التي لا تستند إلى التساوى بضم غير متساو.

إذا أردت دمج صفوف مصدرين من البيانات استنادا إلى قيم الحقول غير المتساوية، فاستخدم ضما غير متساو. عادة ما تستند الاتصالات غير المتساوية إلى عوامل المقارنة الأكبر من (>) أو أقل من (<) أو أكبر من أو تساوي (>=) أو أقل من أو تساوي (< =) . يمكن أن تقوم الاتصالات غير المتساوية التي تستند إلى عامل التشغيل لا يساوي (<>) بإرجاع عدد من الصفوف تقريبا كالضمات المتقاطعة، ويمكن أن يكون من الصعب تفسير النتائج.

كيف أستخدم ضما غير متساو؟

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

حذف ضم

إذا أنشأ Access تلقائيا ضما لا تريده، أو إذا قمت بإنشاء ضم عن طريق الخطأ — على سبيل المثال، الصلة بين حقلين بينهما أنواع بيانات غير مفهمة — يمكنك حذف الصلة.

  1. في شبكة تصميم الاستعلام، انقر فوق الانضمام الذي تريد إزالته.

  2. اضغط على DELETE.

-أو-

  • في شبكة تصميم الاستعلام، انقر ب زر الماوس الأيمن فوق الضم الذي تريد إزالته، ثم انقر فوق "حذف".

أعلى الصفحة

انظر أيضاً

إضافة سجلات

حذفها

هل تحتاج إلى مزيد من المساعدة؟

تعزيز مهارات Office
استكشاف التدريب
الحصول على الميزات الجديدة أولاً
الانضمام إلى Office Insider

هل كانت المعلومات مفيدة؟

شكراً لك على الملاحظات! يبدو أنه من المفيد إيصالك بأحد وكلاء دعم Office لدينا.

×