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

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

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

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

WHERE تحدد الصفوف اللي تدخل التجميع. إذا تبي تعد التسجيلات المكتملة فقط، فلتر حالة التسجيل هنا.

HAVING تحدد المجموعات اللي تظهر بعد التجميع. إذا تبي المقررات اللي فيها تسجيلان مكتملان أو أكثر، حط شرط العدد هنا.

مثال محلول

المقرر A عنده تسجيلان مكتملان وثالث ملغى. المقرر B عنده تسجيل مكتمل واحد.

SELECT course_id, COUNT(*) AS total
FROM enrollments
WHERE status = 'completed'
GROUP BY course_id
HAVING COUNT(*) >= 2;

يظهر A بعدد 2. التسجيل الملغى استبعد قبل العد، وB استبعد بعد التجميع.

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

حط شرط COUNT في HAVING. العد يصير بعد تحديد الصفوف بـ WHERE.

جرّب بنفسك

كيف تظهر كل المقررات اللي عندها تسجيل مكتمل واحد على الأقل؟

اعرض الإجابة

احذف HAVING. بعد WHERE ما تتكون مجموعة أصلا لمقرر ما عنده أي تسجيل مكتمل.

أكمل القراءة

SQL5 دقائق قراءة

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

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

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

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

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

اقرأ الدرس