32- كورس شرح قواعد البيانات MYSQL – MySQL CASE

شرح مفصل لـ MySQL CASE

MySQL CASE هو تعبير شرطي يشبه إلى حد كبير عبارات `IF-THEN-ELSE` الموجودة في لغات البرمجة التقليدية. يتيح لك CASE تنفيذ منطق شرطي في جمل SQL الخاصة بك، مما يجعله أداة قوية للتعامل مع المواقف التي تحتاج فيها لتخصيص النتائج بناءً على شروط معينة.

بناء الجملة الأساسي لـ CASE

يمكن استخدام CASE في MySQL بطريقتين رئيسيتين:

1. **CASE البسيط:**

هذا النوع من CASE يقارن تعبيرًا بقائمة من القيم الممكنة.

CASE expression
       WHEN value1 THEN result1
       WHEN value2 THEN result2
       ...
       ELSE default_result
   END
   

2. **CASE البحثي:**

هذا النوع يسمح بإدخال شروط أكثر تعقيدًا.

CASE
       WHEN condition1 THEN result1
       WHEN condition2 THEN result2
       ...
       ELSE default_result
   END
   

أمثلة على استخدام CASE

المثال الأول: CASE البسيط

لنفترض أن لدينا جدولًا يسمى `employees` يحتوي على الأعمدة التالية: `employee_id`, `name`, و`department_id`. نريد [شركة برمجة مصرية] إرجاع اسم القسم بناءً على `department_id`.

SELECT 
    employee_id,
    name,
    department_id,
    CASE department_id
        WHEN 1 THEN 'HR'
        WHEN 2 THEN 'Finance'
        WHEN 3 THEN 'Engineering'
        ELSE 'Unknown'
    END AS department_name
FROM 
    employees;

المثال الثاني: CASE البحثي

في هذا المثال، سنقوم بتصنيف الموظفين بناءً على رواتبهم إلى فئات: ‘Low’, ‘Medium’, و’High’.

SELECT 
    employee_id,
    name,
    salary,
    CASE
        WHEN salary < 3000 THEN 'Low'
        WHEN salary BETWEEN 3000 AND 7000 THEN 'Medium'
        WHEN salary > 7000 THEN 'High'
        ELSE 'Unknown'
    END AS salary_category
FROM 
    employees;

المثال الثالث: استخدام CASE مع الدوال التجميعية

يمكن أيضًا استخدام CASE مع الدوال التجميعية لتقديم تقارير مخصصة. على سبيل المثال، لحساب عدد الموظفين في كل فئة رواتب:

SELECT 
    CASE
        WHEN salary < 3000 THEN 'Low'
        WHEN salary BETWEEN 3000 AND 7000 THEN 'Medium'
        WHEN salary > 7000 THEN 'High'
        ELSE 'Unknown'
    END AS salary_category,
    COUNT(*) AS employee_count
FROM 
    employees
GROUP BY 
    salary_category;

ملاحظات هامة

– يمكن أن يكون تعبير CASE جزءًا من جملة SELECT أو جملة WHERE أو حتى جملة ORDER BY.
– يجب أن ينتهي تعبير CASE بـ `END`.
– إذا لم يتم تلبية أي [شركة برمجة مصرية] من الشروط ولم يتم تحديد جملة ELSE، فإن MySQL سترجع NULL.

باستخدام تعبيرات CASE، يمكنك تحسين استعلامات SQL الخاصة بك لتكون أكثر ديناميكية وقوة، مما يتيح لك تخصيص النتائج بناءً على الشروط المحددة. تعد هذه الأداة جزءًا لا غنى عنه من مجموعة أدوات أي مطور يعمل مع قواعد بيانات MySQL.