إتقان استخدام INNER JOIN: دمج بيانات متعددة الجداول

Ahmed Waheed

Ahmed Waheed

6 يونيو 2025

إتقان استخدام INNER JOIN: دمج بيانات متعددة الجداول

هذه المقالة موجهة للأشخاص الذين يعرفون أساسيات SQL ولكنهم لا يفهمون JOIN بشكل جيد، أو الذين يريدون مراجعة ما نسوه. المحتوى يتناول مفهوم الـ INNER JOIN والـ OUTER JOIN، وبعد ذلك سنقوم بتطبيقه باستخدام MySQL.

ما هو INNER JOIN؟

الـ INNER JOIN في SQL هو وظيفة مهمة جدًا تستخدم لربط عدة جداول واسترجاع البيانات ذات الصلة. يتيح لنا ذلك دمج بيانات من جدولين أو أكثر بشكل فعال والحصول على المعلومات اللازمة في مجموعة نتائج واحدة. هذه العملية ضرورية بشكل خاص عند استخدام عدة جداول في قاعدة البيانات تحتوي على علاقات.

💡
عندما لا يمكن الحصول على النتائج المتوقعة عند تنفيذ استعلام SQL، قد تشعر أن حل مشكلة INNER JOIN صعب. في مثل تلك الحالات، يمكنك الاستفادة من Apidog لإجراء تصحيح الأخطاء واختبار الـ API بكفاءة، مما يجعل من السهل التحقق من سلوك استعلامات SQL ودمج البيانات. Apidog هو أداة قوية تعزز من إمكانية تصور واختبار الـ API وتساعد على تشخيص المشاكل في قاعدة البيانات بسرعة. يمكن للمبتدئين استخدامه بسهولة، مما يزيد بشكل كبير من فعالية التطوير. قم الآن بتنزيل Apidog وجرب تجربة جديدة في اختبار قاعدة البيانات والـ API!
button
عميل Apidog

بيئة التنفيذ

في هذه المقالة، سنوضح استخدام INNER JOIN الأساسي باستخدام MySQL. النموذج الأساسي هو نفسه حتى في RDBMS الأخرى (مثل PostgreSQL و SQL Server)، ولكن يمكن أن يكون هناك اختلافات طفيفة، لذا تأكد من مراجعة بناء الجملة بناءً على البيئة التي تستخدمها.

إنشاء الجداول

قبل استخدام INNER JOIN، تحتاج أولاً إلى إنشاء جدول لتخزين البيانات. على سبيل المثال، نقوم بإعداد جدول employees (الموظفين) و جدول departments (الأقسام) كما يلي:

CREATE TABLE departments (
    department_id INT PRIMARY KEY,
    department_name VARCHAR(50)
);

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    employee_name VARCHAR(50),
    department_id INT,
    FOREIGN KEY (department_id) REFERENCES departments(department_id)
);

بهذه الطريقة، يمكنك ربط department_id في جدول employees مع department_id في جدول departments، مما يتيح لك دمج كلا الجدولين.

البناء الأساسي

البناء الأساسي لـ INNER JOIN هو كما يلي:

SELECT columns
FROM table1
INNER JOIN table2
ON table1.column = table2.column;

في هذا البناء، يتم ربط جدولين table1 و table2 بواسطة INNER JOIN، باستخدام كلمة ON لدمج الصفوف بناءً على العمود المشترك (المفتاح).

الاستخدام الأساسي

على سبيل المثال، إذا كنت ترغب في استرجاع معلومات الموظفين مع أسماء الأقسام، يمكنك استخدام INNER JOIN كما يلي:

SELECT employees.employee_name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.department_id;

هذا الاستعلام يقوم بدمج عمود employee_name من جدول employees مع عمود department_name من جدول departments، مما يتيح لك معرفة أي قسم ينتمي إليه كل موظف.

الاختلاف بين OUTER JOIN و INNER JOIN

عادة ما تتم مقارنة INNER JOIN مع OUTER JOIN. يشمل OUTER JOIN ثلاثة أنواع إضافية ( LEFT JOIN، RIGHT JOIN، FULL JOIN)، لكن INNER JOIN يعيد فقط البيانات المطابقة للشرط المحدد. على سبيل المثال، إذا كان هناك موظف في جدول employees وليس له قسم محدد، فلن يتم تضمينه في النتائج عند استخدام INNER JOIN.

باستخدام OUTER JOIN، يمكنك تضمين البيانات التي لا تتوافق مع الشروط عن طريق إرجاع قيم NULL. إليك مثالاً عن استخدام LEFT JOIN:

SELECT employees.employee_name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;

في حالة استخدام LEFT JOIN، حتى لو لم يكن هناك قسم له علاقة بالموظف، سيتم عرض اسم الموظف، وسيتم عرض اسم القسم كـ NULL.

مثال تطبيقي: إرسال تنسيق جسم الطلب

مثال 1: إرسال البيانات كـ application/x-www-form-urlencoded

دعونا نلقي نظرة على كيفية استخدام application/x-www-form-urlencoded كتنسيق لجسم طلب API. يسهل هذا الأمر إرسال بيانات النموذج المشفرة في URL.

POST /api/user
Content-Type: application/x-www-form-urlencoded

username=johndoe&email=john@example.com

في هذا التنسيق، يتم إرسال البيانات كأزواج key=value، حيث تفصل المجالات المتعددة بـ &. مثل INNER JOIN يمكنك ربط جداول متعددة لاسترجاع البيانات الضرورية بشكل فعال.

مثال 2: إرسال البيانات كـ application/json

من جهة أخرى، إذا كنت تستخدم application/json، سيتم إرسال جسم الطلب بتنسيق JSON. تعتبر هذه الطريقة مريحة لتمثيل البيانات هيكليًا، خاصةً عند إرسال بيانات معقدة.

POST /api/user
Content-Type: application/json

{
  "username": "johndoe",
  "email": "john@example.com"
}

يسمح لك هذا التنسيق بالحفاظ على هيكل بيانات معقد أثناء إرسال المعلومات إلى API.

استخدام Apidog لتعزيز تفاعل API

Apidog هو أداة مفيدة جدًا لاختبار API وتصحيح الأخطاء. عند التعامل مع استعلامات معقدة مثل INNER JOIN، من المهم التحقق من استجابة API وطلبات البيانات. باستخدام Apidog، يمكنك رؤية محتوى جسم الطلب وردود الاستجابة بصريًا، مما يساعدك في اكتشاف الأخطاء بسرعة. يكون هذا مفيدًا خصوصًا عند دمج عدة جداول أو عند إرسال بيانات بتنسيق JSON.

button

قواعد البيانات الممكنة للاتصال بها عبر Apidog

يدعم Apidog أيضًا قواعد البيانات التي تعتبر شائعة اليوم. دعونا نقدم لكم الأنواع المدعومة من قواعد البيانات في Apidog.

كيفية توصيل API بقاعدة البيانات عبر Apidog

الخطوة 1: أثناء اختبار API، يمكنك استخدام عمليات قاعدة البيانات من خلال إعدادات "المعالجة السابقة" و "المعالجة اللاحقة".

عمليات قاعدة بيانات Apidog

الخطوة 2: قم بإعداد قاعدة البيانات. هنا يمكنك إضافة قاعدة بيانات جديدة من خلال خيار الاتصال بقاعدة البيانات. أدخل المعلومات اللازمة للاتصال بقاعدة البيانات كما هو موضح في الصورة أدناه.

الاتصال بقاعدة البيانات

الإجراء: استرجاع بيانات قاعدة البيانات والتحقق من ردود الأفعال

الخطوة 1: أدخل أمر SQL لتحديد البيانات المستهدفة والإجراء اللازم. على سبيل المثال: "SELECT * FROM departments WHERE department_id = 1;" يمكنك إدخال هذا الأمر لاسترجاع بيانات المستخدمين الذين لديهم department_id = 1 من جدول الأقسام.

استرجاع بيانات قاعدة البيانات والتحقق من ردود الأفعال

ملاحظة: قم بتفعيل خيار عرض النتائج في وحدة التحكم ثم انقر فوق زر إرسال وستظهر لك البيانات التي تم استرجاعها من قاعدة البيانات في وحدة التحكم.

الخطوة 2: من خلال خيار استخراج النتائج في المتغيرات، يمكنك إدخال اسم المتغير وصيغة JSONPath للاحتفاظ بالبيانات المسترجعة من قاعدة البيانات كمتغيرات بيئة في Apidog، سواء كانت متغيرات عالمية أو محلية.

إدخال اسم المتغير وصيغة JSONPath

الخطوة 3: بعد إعداد المتغيرات، انقر فوق زر إرسال لحفظ المتغيرات. يمكنك الآن النقر فوق أيقونة إعدادات البيئة في الزاوية العلوية اليمنى لترى المتغيرات المحفوظة.

التأكد من المتغيرات المحفوظة

علاوة على ذلك، باستخدام ميزة Assertions في Apidog، يمكنك أيضًا التحقق مما إذا كانت استجابة API المسترجعة تتطابق مع بيانات قاعدة البيانات، مما يجعلها ميزة مفيدة جدًا لضمان تصحيح وظائف API وجودتها.

إعداد Assertions في Apidog

عند إعداد Assertions، سيتحقق Apidog تلقائيًا مما إذا كانت البيانات المعادة في الاستجابة تتطابق مع بيانات قاعدة البيانات.

التحقق التلقائي من البيانات في استجابة API

الخاتمة

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

button

الأسئلة الشائعة: FAQ حول INNER JOIN

1. ما الفرق بين INNER JOIN وLEFT JOIN؟

2. ماذا تفعل إذا لم يظهر أي نتيجة عند استخدام INNER JOIN؟

3. ماذا يحدث إذا نسيت شرط الربط عند استخدام INNER JOIN؟

4. هل INNER JOIN و JOIN لهما نفس المعنى؟

5. عند القيام بـ INNER JOIN لعدة جداول، هل الترتيب مهم؟

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات