AzLearn

الربط Joins

تعلم

الربط Joins

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

ما ستتعلمه:

  • المفاتيح — كيف تشير الصفوف إلى بعضها.
  • INNER JOIN — الصفوف المتطابقة فقط.
  • LEFT JOIN — الاحتفاظ بالصفوف حتى دون تطابق.
  • many-to-many — جداول وسيطة لعلاقات كثيرة.

ما لا نغطيه ولماذا

معيار SQL يعرّف أربعة أنواع من الربط الخارجي إلى جانب INNER JOIN الضمني: LEFT JOIN، RIGHT JOIN، وFULL OUTER JOIN. هذا الفصل يغطي INNER وLEFT فقط. السبب عملي:

  • RIGHT JOIN ميكانيكياً = LEFT JOIN مع تبديل ترتيب الجدولين. أي استعلام A RIGHT JOIN B ON … يمكن إعادة كتابته كـB LEFT JOIN A ON … بنتيجة مطابقة. تعلّم LEFT فقط يكفي.
  • FULL OUTER JOIN يجمع LEFT وRIGHT معاً — يُرجع كل الصفوف من الطرفين، ويملأ بـNULL حيث لا يوجد تطابق. مفيد أحياناً (التسويات، مقارنة مصدرين)، لكنه غير مدعوم في SQLite قبل الإصدار 3.39 (مارس 2022). كثير من بيئات الإنتاج لا تزال على إصدارات أقدم.
  • محاكاة FULL OUTER على SQLite الأقدم:
SELECT a.id, a.name, b.id AS b_id
FROM a LEFT JOIN b ON b.a_id = a.id
UNION ALL
SELECT a.id, a.name, b.id AS b_id
FROM b LEFT JOIN a ON a.id = b.a_id
WHERE a.id IS NULL;

السطر الثاني مع WHERE a.id IS NULL يمنع تكرار الصفوف المتطابقة من الجانبين.

التوصية: ابقَ مع LEFT JOIN. أكثر قابلية للنقل عبر المحركات، وأسهل في القراءة، ويغطي تقريباً كل الحالات التي يطرحها العمل الفعلي.

مهارات الفصل

relationships inner-join left-join many-to-many