الرجوع للمكتبةSQL · 5 دقائق قراءة

كيف تظهر كل الطلاب حتى اللي ما سجلوا؟

استخدم LEFT JOIN وشوف أثر القيم الناقصة على العد.

الفكرة ببساطة

ابدأ بتحديد الجدول اللي لازم تحتفظ بكل صفوفه. هنا جدول الطلاب، لذلك مكانه على يسار LEFT JOIN.

إذا ما فيه تسجيل مطابق لطالب، تبقى بيانات الطالب، وأعمدة التسجيل في الناتج تأخذ القيمة NULL.

مثال محلول

عندك Students فيه سارة ومازن، وEnrollments فيه تسجيلان لسارة فقط. نبي عدد التسجيلات لكل طالب.

SELECT s.name, COUNT(e.id) AS registrations
FROM students AS s
LEFT JOIN enrollments AS e ON e.student_id = s.id
GROUP BY s.id, s.name;

سارة تظهر بعدد 2، ومازن يظهر بعدد 0. COUNT(e.id) يتجاوز القيمة NULL في صف مازن.

انتبه لهالنقطة

COUNT(*) يحسب صف مازن لأنه موجود بعد الربط، حتى لو أعمدة التسجيل فيه فارغة. في هذا المثال يعطيه 1.

جرّب بنفسك

كيف تعدل الاستعلام عشان يعرض الطلاب اللي عندهم صفر تسجيلات فقط؟

اعرض الإجابة

أضف HAVING COUNT(e.id) = 0 بعد GROUP BY. الشرط هنا على نتيجة التجميع.

أكمل القراءة

SQL5 دقائق قراءة

متى تستخدم WHERE ومتى تستخدم HAVING؟

فلتر صفوف الجدول أولا، وبعد التجميع فلتر المجموعات.

اقرأ الدرس
هياكل البيانات4 دقائق قراءة

متى تستخدم الطابور ومتى تستخدم المكدس؟

تتبع ترتيب خروج العناصر من Queue وStack على مثال طلبات دعم.

اقرأ الدرس