في الموضوع السابق تعرفنا على عبارة IN و NOT IN وكما ذكرنا تستخدم العبارتان لتصفية النتائج اعتمادا على مجموعة من القيم يتم تضمينها بين قوسين كما في المثال التالي
SELECT * FROM CUTOMER WHERE COUNTRY IN ('IRAQ','EYGEPT','UAE')
يمكن استخدام عبارة IN مع مجموعة من القيم ولكن هذه القيم مخزنه في جدول ثاني. مثلا جدول الزبائن يحتوي على حقل بلد الزبون وجدول الطلبيات لا يحتوي على هذا الحقل ولكن يحتوي على حقل معرف الزبون . الان اذا اردنا معرفة جميع الطلبيات الزبائن الذين هم من العراق ؟ يمكن القيام بذلك بعدة طرق ولكن هنا سوف نناقش كيفية القيام بذلك باستخدام عبارة IN . الأمر بسيط نحتاج إلى استخدام ما يعرف بالاستعلام الداخلي INNER QUERY وهذا الاستعلام يجب أن يحقق شرط واحد وهو أن بلد الزبون هو العراق ويعيد حقل واحد فقط وهو معرف الزبون . ثم نستخدم قيم معرف الزبون (والتي سوف تحتوي على فقط الزبائن من العراق) للحصول على كل الطلبيات لهذه المجموعة من الزبائن وكما يلي
SELECT * FROM ORDERS WHERE CUST_ID IN (SELECT CUST_ID FROM CUTOMER WHERE COUNTRY ='IRAQ')
ملاحظة
ORDERS= جدول الطلبيات
CUSTOMER = جدول الزبائن
يعمل الاستعلام السابق كما يلي
اولا: يقوم الاستعلام الداخلي بأعادة قائمة تحتوي على معرف الزبائن الذين هم من العراق
(SELECT CUST_ID FROM CUTOMER WHERE COUNTRY ='IRAQ')
ثانيا : سوف تقوم عبارة IN بتصفية نتائج جدول الطلبيات حسب حقل معرف الزبون لكي تعيد طلبيات الزبائن الذين يكون معرف الزبون الخاص بهم ضمن مجموعة القيم التي تعيدها الاستعلام الداخلي وهم للزبائن من العراق.
من المثال السابق يتضح لنا الإمكانيات الكبيرة التي تمتلكها عبارة IN حيث أن الاستعلام الداخلي يمكن أن يكون معقد جدا لتصفية النتائج حسب المتطلبات.
كذلك يمكن استخدام NOT IN مع الاستعلام الداخلي INNER QUERY. الاستعلام التالي سوف يعيد كل طلبيات الزبائن عدى الذين هم من العراق .
SELECT * FROM ORDERS WHERE CUST_ID NOT IN (SELECT CUST_ID FROM CUTOMER WHERE COUNTRY ='IRAQ')
يعمل الاستعلام السابق كما يلي
اولا: يقوم الاستعلام الداخلي بأعادة قائمة تحتوي على معرف الزبائن الذين هم من العراق
(SELECT CUST_ID FROM CUTOMER WHERE COUNTRY ='IRAQ')
ثانيا : سوف تقوم عبارة NOT IN بتصفية نتائج جدول الطلبيات حسب حقل معرف الزبون لكي تعيد طلبيات الزبائن الذين يكون معرف الزبون الخاص بهم غير موجود ضمن مجموعة القيم التي تعيدها الاستعلام الداخلي وهم كل الزبائن عدى الزبائن من العراق.
ليست هناك تعليقات:
إرسال تعليق