عند جمع AND وOR في شرط Oracle يجب أن تعكس الأقواس معنى الطلب. نفترض هنا أننا نريد الموظفين في التسويق أو التطوير، بشرط أن يتجاوز الراتب 4000 في الحالتين. لا نريد تطبيق حد الراتب على تخصص واحد فقط.
تستخدم الأمثلة جداول التدريب في درس إنشاء جداول وبيانات تدريب Oracle. نفّذ إعدادها مرة واحدة في مخطط تدريب قبل الاستعلامات، حتى تتطابق أسماء الأعمدة والنتائج.
مثال SQL قابل للنسخ
SELECT emp_id, emp_name, job, salary
FROM gc_employees
WHERE (job = 'marketing' OR job = 'developer')
AND salary > 4000
ORDER BY emp_id;
SELECT emp_id, emp_name, job, salary
FROM gc_employees
WHERE job IN ('marketing', 'developer') AND salary > 4000
ORDER BY emp_id;الأولوية تغير النتيجة
AND لها أولوية أعلى من OR. لذلك job = marketing OR job = developer AND salary > 4000 قد يسمح بكل موظفي التسويق بصرف النظر عن الراتب. توضح الأقواس أن تخصص الموظف يطابق أحد الخيارين أولًا، ثم يجب أن يتحقق شرط الراتب أيضًا.
النتيجة المتوقعة
يرجع المثالان الموظفين 1 و2 و4. لا تظهر Maryam لأن راتبها 4000 وليس أكبر منه، ولا تظهر Noor لأن راتبها 3000. إذا أردت شمول الحد فاستخدم >=، ثم حدّث وصف المثال والنتيجة المتوقعة بما يطابق هذا التغيير.
WHERE ليست IF
WHERE تصفي صفوف نتيجة الاستعلام. أما IF فهي عبارة تحكم في PL/SQL، وCASE تعبير لاختيار قيمة داخل SQL. لا تستخدم هذه الأسماء بوصفها أوامر متطابقة. يمكن اختصار مقارنة عمود بقيمتين إلى IN كما في الاستعلام الثاني، مع الإبقاء على شرط الراتب واضحًا.
الصور والفيديو من الشرح السابق
الكود النصي أعلاه هو النسخة المصححة؛ قد تختلف المواد المرئية السابقة في أسماء المتغيرات أو طريقة التشغيل.







