انتقل إلى محتوى الدرس

Independent vs Correlated Subqueries الاستعلام المستقل مقابل المترابط

تعلّم الاستعلامات الفرعية المترابطة ومعامل EXISTS في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
8 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

في الدرس السابق، كانت الاستعلامات الفرعية مستقلة غير مترابطة؛ إذ ينفّذ المحرك الاستعلام الداخلي مرة واحدة بمعزل عن الخارجي. أما الاستعلام الفرعي المترابط (Correlated Subquery) فيشير داخله إلى عمود أو أكثر من جدول معرّف في الاستعلام الخارجي:

  • الارتباط بالاسم المستعار الخارجي: نظراً لاعتماد جملة WHERE الداخلية على اسم مستعار خارجي (مثل WHERE o.user_id = u.user_id)، لا يمكن تشغيل الاستعلام الداخلي بمفرده.
  • التقييم المنطقي لكل صف: منطقياً، تُقيّم نتيجة الاستعلام الداخلي نسبةً إلى كل صف مرشح يفحصه الاستعلام الخارجي.
مخطط الاستعلامات الفرعية المترابطة ومعاملي EXISTS و NOT EXISTS في MySQL 8
SQL
-- Fetch each customer along with their latest order date
SELECT
  u.user_id,
  u.full_name,
  (
    SELECT MAX(o.order_date)
    FROM orders AS o
    WHERE o.user_id = u.user_id
  ) AS last_order_date
FROM users AS u;