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

Counting Correctly with LEFT JOIN العد الصحيح مع LEFT JOIN

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

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

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

عند تجميع نتائج LEFT JOIN باستخدام GROUP BY، يقع كثير من المطورين في فخ استدعاء COUNT(*)؛ فبما أن السجل الأيسر غير المرتبط يظل ممثلاً بصف واحد في النتيجة (مع قيم NULL في اليمين)، فإن COUNT(*) يحسب ذلك الصف ويعطي 1 بدلاً من 0! التزم دائماً بالقاعدتين التاليتين:

  • استخدم COUNT(right_table.pk): مرّر عمود المفتاح الأساسي للجدول الأيمن (COUNT(o.order_id)) ليتجاهل قيم NULL ويرجع 0 بدقة.
  • غلّف المجاميع بدالة COALESCE: استخدم COALESCE(SUM(o.total_amount), 0.00) لتحويل المجموع الفارغ إلى صفر رقمي نظيف.
SQL
-- Count right-table PK and coalesce NULL sums to zero
SELECT
  u.user_id,
  u.full_name,
  COUNT(o.order_id) AS orders_count,
  COALESCE(SUM(o.total_amount), 0.00) AS total_spent
FROM users AS u
LEFT JOIN orders AS o ON u.user_id = o.user_id
GROUP BY u.user_id, u.full_name;