العبارة المنطقية OR في SQL
يمكن دمج عبارة WHERE مع العبارة المنطقية OR. يتم استخدام العملية OR لتصفية السجلات بناءً على أكثر من شرط واحد. تقوم العبارة المنطقية OR بعرض سجلاً إذا كان أي من تلك الشروط التي تفصل بينها العبارة OR تتحقق (أي تساوي TRUE). باختصار يمكن القول إنه يكفي أن يتحقق شرط واحد لإظهار السجل المطلوب في SQLعند استخدام الأمر المنطقي OR.
بناء جملة OR
الشكل العام لاستخدام وبناء أمر OR في لغة SQL (أي OR syntax) تتم كما يلي:
FROM table_name; WHERE condition1 OR condition2 OR condition3 …; |
حيث يمثل العمود الأول Column 1، والعمود الثاني Column 2أسماء حقول الجدول الذي تريد تحديد واستخراج البيانات منها عند تحقق أي من الشرط المحدد condition1 أو الشرط condition2 أو الشرط الثالث condition3 أو جميعها وهكذا.
ملاحظة: لإظهار السجل المطلوب عند استخدام الأمر OR، يجب أن تتحقق أي من تلك الشروطالواردة في القسم WHERE، وفي حال عدم تحقق أي شرط، فلن يتم اظهار تلك السجلات المطلوب فلترتها.
مثال على استخدام أمر OR في SQL
الجدول التالي يوضح مجموعة مختارة من جدول "الزبائن" Customers
Country | City | Address | CustomerName | CustomerID |
UK | London | 120 Hanover Sq. | John | 100 |
USA | New York | 109 E 16th St | Marry | 200 |
Jordan | Amman | Al-Mutanabbi St. | Ahmad | 300 |
USA | New York | 110 E 20th St | Ali | 400 |
Egypt | Cairo | El Tahrir St | Ahmad | 500 |
USA | New York | 109 E 16th St | Sari | 600 |
Egypt | Cairo | El Tahrir St | Adel | 700 |
Jordan | Amman | Al-Mutanabbi St. | Omar | 800 |
Egypt | Alexandria | Al Awleyaa St | Ahmad | 900 |
مثال 1: تحديد وإظهار حقول محددة ومختارة باستخدام الأمر المنطقي ORأي ضمن أكثر من شرط معين
فرضاً أننا أردنا اظهار قائمة باسم "اسم الزبون" CustomerNameالذي يسكن في جمهورية مصر العربية أو يسكن في المملكة الأردنية Jordanأو كلاهما. تحدد جملة SQLالتالية عمود "CustomerName" وتظهر جميع أسماء الزبائن التي تنطبق عليهم إحدى الشرطين السابقين، (أي أولئك الأسماء الذين يسكنون إما في دولة "مصر" Egypt أو يسكنون في "المملكة الأردنية" Jordan) من الجدول "Customers":
SELECT CustomerName FROM Customers; WHERE Country =’Egypt’ OR Country =’Jordan’; |
ليظهر الجدول التالي:
CustomerName |
Ahmad |
Ahmad |
Adel |
Omar |
Ahmad |
مثال 2: تحديد وإظهار جميع الحقول (الأعمدة) التي ينطبق عليها أكثر من شرط محدد باستخدام الأمر OR
فرضاً أننا أردنا اظهار جميع سجلات الزبائن الذين يسكنون في دولة مصر العربية Egypt أو في المملكة الأردنية الهاشمية Jordan(أو كلاهما). تقوم عبارة SQLالتالية بتحديد وإظهار جميع الأعمدة (أي الحقول) من جدول "الزبائن" Customersالتي ينطبق عليها تلك الشروط كما يلي:
WHERE Country =’Egypt’ OR Country =’Jordan’; |
الوقوع في الخطأ عند استخدام الأمر OR في SQL
عند التعامل مع الأمر المنطقي OR في قواعد البيانات SQL، يجب مراعاة عدم الوقوع في خطأ إظهار بعض البيانات غير المرغوب بها عند الاستعلام عن بيانات معينة. ويحصل مثل هذا الخطأ بسبب أن الأمر المنطقي OR يقوم بإظهار السجلات عند تحقق شرط واحد على الأقل. لذلك، يجي الحذر عند استعمال الأمر المنطقي OR عند تصفية البيانات المطلوبة من قواعد بيانات SQL. فمثلاً عند استخدام الكود البرمجي التالي في SQL للجدول أعلاه:
SELECT * FROM Customers; WHERE Country =’Egypt’ OR Country =’Jordan’ OR City =’London’; |
فلن يتم اظهار السجلات المطلوبة ضمن تلك الشروط السابقة (في مثال 2) فقط. وإنما سيقوم بإرجاع وإظهار جميع السجلات التي فيها كل سجل يشمل على معلومات الزبون الذي يسكن في جمهورية "مصر" Egypt أو الذي يسكن في "المملكة الأردنية الهاشمية" Jordan أو يسكن مدينة "لندن" London أو جميعها. باختصار سيتم اظهار سجل إضافي (باللون الأخضر) كما يلي؛ أي سجل اسم الشخص الذي يسكن لندن.
Country | City | Address | CustomerName | CustomerID |
UK | London | 120 Hanover Sq. | John | 100 |
Jordan | Amman | Al-Mutanabbi St. | Ahmad | 300 |
Egypt | Cairo | El Tahrir St | Ahmad | 500 |
Egypt | Cairo | El Tahrir St | Adel | 700 |
Jordan | Amman | Al-Mutanabbi St. | Omar | 800 |
Egypt | Alexandria | Al Awleyaa St | Ahmad | 900 |