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

Filtering and Aggregating Joins تصفية وتجميع البيانات المترابطة

تعلّم الربط الداخلي INNER JOIN والاستعلام من عدة جداول في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
7 مشاهدة

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

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

بعد ربط الجداول عبر INNER JOIN، يمكنك دمجها بسلاسة مع جمل التصفية والتجميع WHERE وGROUP BY وHAVING وORDER BY لبناء تقارير تحليلية دقيقة:

  • التصفية المسبقة بـ WHERE: صفِّ السجلات المترابطة (مثل WHERE o.status = 'paid') قبل مرحلة تجميع المجموعات.
  • التجميع بالمفتاح الأساسي: جمّع دائماً حسب المفتاح الأساسي والاسم معاً (GROUP BY u.user_id, u.full_name) للتوافق مع وضع ONLY_FULL_GROUP_BY الافتراضي في MySQL 8، ولمنع دمج عميلين مختلفين يحملان الاسم الشخصي ذاته عن طريق الخطأ.
SQL
-- Aggregate paid revenue per customer across joined tables
SELECT
  u.user_id,
  u.full_name,
  COUNT(o.order_id) AS paid_orders,
  SUM(o.total_amount) AS lifetime_value
FROM users AS u
INNER JOIN orders AS o ON u.user_id = o.user_id
WHERE o.status = 'paid'
GROUP BY u.user_id, u.full_name
ORDER BY lifetime_value DESC;