خليل سعيد الكحلاني مديرالموقع
عدد الرسائل : 307 العمر : 39 الموقع : منتدى الاحبه في الله تاريخ التسجيل : 18/06/2008
| موضوع: الدرس السابع : كيفية التعامل مع جملة Select stame, ضمن سلسلة دروس كيف تبدأ في تعلم الأوراكل السبت أغسطس 23, 2008 4:30 pm | |
|
| بسم الله الرحمن الرحيم الدرس السابع نستأنف اليوم ما بدأنا به سابقا ونكمل كيفية التعامل مع جملة Select stament فكما قلت هي الاساس في استعراض البيانات واستغلال الفانكشن التي تم شرحها بالسابق تعطي قصر للوقت وعرض صحيح للبيان الصحيح
سوف نستعرض اليوم ال Subqueries او ما يسمى بجمل ال selectالمتداخلة وهي تأتي بأشكال متعددة نذكر اشهرها وما يمكن التعامل معها
اشكال ال Subqueries
1- WHERE CONDITION
CODE select * from all_tables tabs where tabs.table_name in (select cols.table_name from all_tab_columns cols where cols.column_name = 'SUPPLIER_ID'); لاحظوا ان محور الحدث كله حول WHERE واستخدمنا ال IN لتوضح مفهوم هل هذا البيان موجود ضمن مجموعة من البيانات في جدول آخر وكأننا نقول اعرض لنا جميع البيانات من الجدول all_tables على ان يكون مثلا اسم الجدول موجود ضمن جملة select اخرى بحيث ترجع جميع اسماء الجداول واخص هنا واركز ان اسم الحقل قبل IN يجب ان يكون نوع البيانات قي جملة ال select بعد IN متوافقة بحيث لايجوان ان تقول
CODE where cols.column_name in (select * from table_name)
ويوجد نوعين آخرين سوف يتم توضحهما فيما بعد ان شاء الله وهذا مثال توضحيح على ما سبق اعرض اسم الموظف ورقمه على ان يكون الموظفين في الادراة العامة
CODE
SELECT EMP_NAME,EMP_NO FROM EMPLOYEES WHERE DPT_NO IN (SELECT DPT_NO FROM DEPARTMENTS WHERE DPT_NAME='الادرارة العامة' هنا سوف يعرض اسماء الموظفين الذين ينتمون الى الادارة رقم 10 مثلا على ان تكون هذه الادارة ضمن جملة ال SELECT الثانية وتكون اسمها الادارة العامة
* UNION Query ويقصد بها دمج استعلامين لحقلين متشابهين او اكثر في جدولين مختلفين ويستفاد منها بعدم اظهار البيانات المتكررة على ان يكون عدد الحقول في الجدول الاول مساوي لعدد الحقول للجدول الثاني
CODE select field1, field2, . field_n from tables UNION select field1, field2, . field_n from tables; مثال
CODE select supplier_id from suppliers UNION select supplier_id from orders;
استخدام With ORDER BY Clause مع union توضع في اخر ال unio وممن ان ترمز لاسم الحقل الاول برقم 1وهكذا
CODE select supplier_id, supplier_name from suppliers where supplier_id > 2000 UNION select company_id, company_name from companies where company_id > 1000 ORDER BY 2; رقم 2 هو رمز supplier_name وكذلك company_name ولايعني الرقم عدد الحقول ولكن تعني الترتيب فلو وحدنا الاسماء لكتبنا الاسماء بعد Order By CODE]select supplier_id, supplier_name as "name" from suppliers where supplier_id > 2000 UNION select company_id, company_name as "name" from companies where company_id > 1000 ORDER BY name;[/CODE] استخدام UNION ALL Query هي نفس مبدأ عمل ال union ولكن تعرض جميع البيانات في الجدولين مع التكرار
CODE select field1, field2, . field_n from tables UNION ALL select field1, field2, . field_n from tables;
مثال
CODE select supplier_id from suppliers UNION ALL select supplier_id from orders;
INTERSECT Query
ومبدأ عمله يشبة ال union وهو دمج البيانات مع فارق انه يعرض البيانات الموجودة في الجدول الاول والتي غير موجودة في الجدول الثاني يعني يعرض الغير مكرر فقط select field1, field2, . field_n
CODE from tables INTERSECT select field1, field2, . field_n from tables;
مثال
CODE select supplier_id from suppliers INTERSECT select supplier_id from orders;
CODE MINUS Query
هي عملية ارجاع البيانات في الاستعلام الاول والغير موجود في الاستعلام الثاني
CODE select field1, field2, . field_n from tables MINUS select field1, field2, . field_n from tables;
مثال
CODE select supplier_id from suppliers MINUS select supplier_id from orders
|
| |
|