ربط ثلاثة جداول أو أكثر
تسلسل عمليات الربط والاستدلال بشأن مجموعات النتائج الوسيطة
ربط ثلاثة جداول أو أكثر درس مجاني في SQL Interview Prep على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Interview Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Interview Prep 4 دروس في المجموع.
تتسلسل عمليات الربط ولا تتفرع
نادرًا ما تتوقف مسائل المقابلات الحقيقية عند جدولين. سيُطلب منكم ربط ثلاثة جداول أو أربعة أو أكثر. والفكرة الأساسية التي تزيل التعقيد هي أن الربط متعدد الجداول ليس سوى سلسلة من عمليات الربط بين جدولين.
يربطك قاعدة البيانات الجدولين الأولين في نتيجة وسيطة، ثم تربط تلك النتيجة بالجدول الثالث، وهكذا. إذا كنتم قادرين على تحليل عملية ربط واحدة، فبإمكانكم تحليل سلسلة من عمليات الربط.
مخطط الجداول الثلاثة
نوسّع مثالنا بإضافة جدول ثالث. لدينا الآن العملاء وطلباتهم والمنتجات التي يشير إليها كل طلب.
customers(id, name)orders(id, customer_id, product_id, amount)products(id, title)
تربطها علاقتان: orders.customer_id = customers.id وorders.product_id = products.id.
customers(id, name)
orders(id, customer_id, product_id, amount)
products(id, title)الاستعلام الأساسي للجداول الثلاثة
ضع عمليات الربط متتابعة. كل JOIN ... ON يضيف جدولًا ويحدّد كيفية اتصاله بما سبقه.
اقرأ الاستعلام من الأعلى إلى الأسفل: ابدأ من orders، ثم أضف العميل المطابق، ثم أضف المنتج المطابق. يكتسب كل صف من orders اسمًا وعنوانًا للمنتج.
SELECT c.name, p.title, o.amount
FROM orders o
JOIN customers c ON c.id = o.customer_id
JOIN products p ON p.id = o.product_id;التفكير في مجموعات النتائج الوسيطة
النموذج الذهني الذي يسهّل عمليات الربط بين جداول متعددة: بعد كل JOIN، تصوّر النتيجة الوسيطة حتى تلك اللحظة.
- بعد عملية الربط الأولى: أعمدة orders + customer.
- بعد عملية الربط الثانية: تلك النتيجة + أعمدة product.
يمكن لعبارة ON التالية أن تشير إلى أي عمود موجود بالفعل في المجموعة الوسيطة، ولذلك يؤثر ترتيب الربط في ما يمكنك كتابته في كل عبارة ON.
كل عبارة ON ترى الجداول السابقة
تترتب على ذلك نتيجة مهمة: يمكن لعبارة ON الخاصة بعملية ربط لاحقة أن تشير إلى أي جدول رُبط قبلها، وليس فقط الجدول الذي تتم إضافته.
في هذا المثال، تربط عملية الربط الثالثة بالاسم المستعار o (orders)، الذي كان موجودًا بالفعل ضمن النطاق. ويمكنك أيضًا ربط جدول رابع بالاسم المستعار c أو p، لأن كليهما أصبح جزءًا من النتيجة المتراكمة.
SELECT c.name, p.title, w.region
FROM orders o
JOIN customers c ON c.id = o.customer_id
JOIN products p ON p.id = o.product_id
JOIN warehouses w ON w.id = o.warehouse_id; -- refers to oالبدء من الجدول المركزي
نصيحة عملية في المقابلات المباشرة: ابدأ عبارة FROM بـجدول الحقائق / الجدول المركزي (وهو عادةً الجدول الموجود في وسط العلاقات)، ثم انتقل منه إلى جداول البحث المرجعية.
يقع orders في الوسط، إذ يحتوي على مفاتيح خارجية تشير إلى customers وproducts، ولذلك يحافظ البدء منه على بساطة كل عبارة ON ويجعل مراجعها تتجه إلى جداول سبق تعريفها.
-- orders is central: it links to both sides
FROM orders o
JOIN customers c ON c.id = o.customer_id
JOIN products p ON p.id = o.product_idيتضاعف التفرّع عبر السلاسل
ما تعلّمته عن التفرّع (fan-out) لا يزال ينطبق هنا، بل إنه يتراكم. فإذا كان لكل طلب عناصر عديدة، وكان لكل عنصر صفوف ضرائب عديدة، تضاعف عدد الصفوف عند كل خطوة.
عندما تبدو نتيجة تجميع أكبر من اللازم في استعلام يتضمن عمليات ربط متعددة، فاشتبِه في تفرّع أدخلته إحدى عمليات الربط الوسطى، وتحقّق من مستوى تفاصيل كل عملية ربط على حدة.
-- rows = orders * items_per_order * tax_rows_per_item
SELECT o.id
FROM orders o
JOIN order_items i ON i.order_id = o.id
JOIN item_taxes t ON t.item_id = i.id;مزج أنواع الربط في سلسلة
يمكنك الجمع بين عمليات INNER وLEFT في استعلام واحد، لكن الترتيب مهم. فبمجرد أن تُدخل LEFT JOIN قيم NULL، يمكن لعملية INNER JOIN لاحقة تشير إلى أعمدة NULL هذه أن تزيل الصفوف التي كان يفترض الحفاظ عليها.
في هذا المثال، إذا لم يكن لدى عميل أي طلب، فإن LEFT JOIN تُبقيه مع product_id بقيمة NULL، ثم تُزيله INNER JOIN التالية إلى products مجددًا؛ وهذا خطأ يسهل الوقوع فيه تحت الضغط.
SELECT c.name, p.title
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
JOIN products p ON p.id = o.product_id;
-- the INNER products join can cancel the LEFT JOINالحفاظ على طابع الربط الخارجي
للحفاظ على العملاء الذين ليس لديهم طلبات حتى النهاية، اجعل عملية الربط اللاحقة LEFT أيضًا. عندها تنتقل قيم NULL بأمان حتى النهاية.
قاعدة عامة: ما إن تنتقل إلى الربط الخارجي، فاستمر في استخدامه لكل جدول يتفرع من الفرع الاختياري.
SELECT c.name, p.title
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
LEFT JOIN products p ON p.id = o.product_id;
-- customers with no orders are now kept (NULL title)تصبح الأسماء المستعارة أساسية مع التوسع
مع وجود أربعة أو خمسة جداول، قد تشترك عدة جداول في أسماء أعمدة مثل id أو name أو created_at. وتمنع الأسماء المستعارة القصيرة والمتسقة الالتباس وتحافظ على سهولة قراءة الاستعلام.
اختر أسماء مستعارة توحي بالجدول (c وo وp)، وحدّد الجدول لكل عمود. وينظر المحاورون إلى طريقة استخدامك للأسماء المستعارة بوصفها مؤشرًا على أسلوب كتابتك لـ SQL في بيئة الإنتاج.
SELECT c.id AS customer_id,
o.id AS order_id,
p.id AS product_id,
p.title
FROM orders o
JOIN customers c ON c.id = o.customer_id
JOIN products p ON p.id = o.product_id;جداول الربط لعلاقات متعدد إلى متعدد
عندما تكون بين كيانين علاقة متعدد إلى متعدد، يوجد جدول ثالث للربط (وسيط) بينهما، وتتم عملية الربط عبره. يرتبط الطلاب والمقررات عبر enrollments.
إن إدراك ضرورة المرور عبر جدول ربط يُعد بحد ذاته إشارة شائعة في المقابلات.
SELECT s.name, c.title
FROM students s
JOIN enrollments e ON e.student_id = s.id
JOIN courses c ON c.id = e.course_id;تحقق سريع
حلّل سلسلة ربط مختلطة.
مراجعة: ربط ثلاثة جداول أو أكثر
تذكّر النقاط التالية في المقابلة:
- عملية الربط متعددة الجداول هي سلسلة من عمليات الربط بين جدولين؛ حلّل النتيجة الوسيطة بعد كل خطوة.
- يمكن لعبارة ON اللاحقة أن تشير إلى أي جدول سابق في السلسلة.
- ابدأ من الجدول المركزي وانتقل منه إلى جداول البحث.
- يتضاعف التفرّع عبر عمليات الربط؛ فتحقّق من مستوى التفاصيل في كل خطوة.
- يمكن لعملية INNER JOIN بعد LEFT JOIN أن تلغي أثرها؛ فاستمر في استخدام الربط الخارجي للحفاظ على الصفوف الاختيارية.
- تُربط علاقات متعدد إلى متعدد عبر جدول ربط.
الأسئلة الشائعة
هل درس «ربط ثلاثة جداول أو أكثر» مجاني؟
نعم — نص درس «ربط ثلاثة جداول أو أكثر» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Interview Prep، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Interview Prep 4 دروس في المجموع.
ماذا ستتعلم في «ربط ثلاثة جداول أو أكثر»؟
تسلسل عمليات الربط والاستدلال بشأن مجموعات النتائج الوسيطة تتمرن على SQL Interview Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Interview Prep؟
لا تُشترط خبرة سابقة. SQL Interview Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «ربط ثلاثة جداول أو أكثر»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Interview Prep هذا؟
نعم. كل درس في SQL Interview Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- كيفية مطابقة INNER JOIN للصفوف
- ON مقابل WHERE في عمليات الربط
- توسّع الربط وتضاعف الصفوف
- ربط ثلاثة جداول أو أكثر