0Pricing
SQL Academy · درس

LEFT JOIN وRIGHT JOIN وعمليات الربط الخارجية

استخدم LEFT JOIN للاحتفاظ بالصفوف غير المتطابقة، وافهم RIGHT وFULL OUTER JOIN، واكتشف البيانات المفقودة باستخدام WHERE x IS NULL.

LEFT JOIN وRIGHT JOIN وعمليات الربط الخارجية درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.

LEFT JOIN: الاحتفاظ بكل صفوف اليسار

يُرجع LEFT JOIN كل صف من الجدول الأيسر، مع أعمدة الجانب الأيمن المطابقة أو NULL عند عدم وجود تطابق.

SELECT u.id, u.email, o.id AS order_id
FROM users u
LEFT JOIN orders o ON o.user_id = u.id;

-- Users without orders still appear, with order_id = NULL.

RIGHT JOIN

هو عكس LEFT JOIN — إذ يُبقي كل صفوف اليمين. يفضّل معظم المطورين إعادة كتابة عمليات RIGHT JOIN بصيغة LEFT لتحسين قابلية القراءة:

SELECT u.id, u.email, o.id
FROM orders o
RIGHT JOIN users u ON u.id = o.user_id;

-- Equivalent to LEFT JOIN with sides swapped:
SELECT u.id, u.email, o.id
FROM users u
LEFT JOIN orders o ON o.user_id = u.id;

FULL OUTER JOIN

يُبقي الصفوف من كلا الجانبين. وتكون الأعمدة غير المطابقة بقيمة NULL:

SELECT u.email, o.id AS order_id
FROM users u
FULL OUTER JOIN orders o ON o.user_id = u.id;

العثور على التطابقات المفقودة

يعثر LEFT JOIN مع WHERE right.id IS NULL على الصفوف في الجدول الأيسر التي لا تملك تطابقًا في الجدول الأيمن — وهذا هو «الربط المضاد» الشائع:

SELECT u.id, u.email
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE o.id IS NULL;        -- users who have never placed an order

LEFT JOIN مع دالة تجميعية

مفيد في التقارير التي تعرض «0 عند عدم وجود بيانات»:

SELECT u.id, u.email, COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id, u.email
ORDER BY order_count DESC;

موضع التصفية مهم

تحوّل شروط التصفية على الجدول الأيمن في WHERE عملية LEFT JOIN إلى INNER JOIN. ضعوا هذه الشروط في ON للحفاظ على سلوك LEFT:

-- Drops users without paid orders entirely:
SELECT u.id, COUNT(o.id)
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE o.status = 'paid'
GROUP BY u.id;

-- Keeps users with no paid orders:
SELECT u.id, COUNT(o.id)
FROM users u
LEFT JOIN orders o
  ON o.user_id = u.id AND o.status = 'paid'
GROUP BY u.id;

عمليات LEFT JOIN متعددة

سلسلوها؛ إذ يحافظ كل LEFT على الصفوف الموجودة إلى يسار عامل الربط نفسه:

SELECT u.email, o.id, p.name
FROM users u
LEFT JOIN orders o   ON o.user_id = u.id
LEFT JOIN products p ON p.id = o.product_id;

أداء LEFT JOIN

يضيف LEFT JOIN تكلفة صغيرة مقارنةً بـ INNER، إذ يجب على المُخطِّط الاحتفاظ بالصفوف غير المطابقة. وغالبًا ما تكون هذه التكلفة ضئيلة، لكن إذا لم تكونوا بحاجة إلى الصفوف غير المطابقة، فإن INNER JOIN يكون أقل تكلفة قليلًا.

الناتج NULL من الربط الخارجي

قد يفاجئ الناتج NULL من LEFT JOIN الشيفرة اللاحقة. استخدموا COALESCE لتوفير قيم افتراضية:

SELECT u.email, COALESCE(SUM(o.total), 0) AS revenue
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.email;

CROSS JOIN — عندما تريدون كل الأزواج

يربط كل صف من A بكل صف من B. استخدموه بحذر:

SELECT d.date, u.id
FROM users u
CROSS JOIN generate_series('2024-01-01', '2024-01-07', INTERVAL '1 day') AS d(date);

أنماط الربط المضاد

ثلاث طرق اصطلاحية للعثور على «الصفوف اليسرى التي لا تملك تطابقًا»:

-- LEFT JOIN ... WHERE IS NULL
SELECT u.* FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE o.id IS NULL;

-- NOT EXISTS (often the planner's favourite)
SELECT u.* FROM users u
WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.user_id = u.id);

مراجعة

تُبقي عمليات الربط الخارجية الصفوف غير المطابقة.

  • LEFT = كل الصفوف اليسرى، وNULL في اليمين عند عدم وجود تطابق
  • RIGHT = العكس؛ استخدموا LEFT لتحسين قابلية القراءة
  • FULL OUTER = كلا الجانبين
  • الربط المضاد = LEFT JOIN ... WHERE right IS NULL

تحقق سريع

أي نوع من JOIN يُرجع المستخدمين حتى إذا لم تكن لديهم أي طلبات؟

الأسئلة الشائعة

هل درس «LEFT JOIN وRIGHT JOIN وعمليات الربط الخارجية» مجاني؟

نعم — نص درس «LEFT JOIN وRIGHT JOIN وعمليات الربط الخارجية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.

ماذا ستتعلم في «LEFT JOIN وRIGHT JOIN وعمليات الربط الخارجية»؟

استخدم LEFT JOIN للاحتفاظ بالصفوف غير المتطابقة، وافهم RIGHT وFULL OUTER JOIN، واكتشف البيانات المفقودة باستخدام WHERE x IS NULL. تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟

لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «LEFT JOIN وRIGHT JOIN وعمليات الربط الخارجية»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟

نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. لماذا نستخدم عمليات الربط (مراجعة النموذج العلائقي)
  2. آلية INNER JOIN
  3. LEFT JOIN وRIGHT JOIN وعمليات الربط الخارجية
  4. الربط الذاتي والأسماء المستعارة
← العودة إلى SQL Academy