بتـــــاريخ : 9/19/2008 12:02:14 AM
الفــــــــئة
  • الحـــــــــــاسب
  • التعليقات المشاهدات التقييمات
    0 1065 0


    الدرس السابع

    الناقل : mahmoud | العمر :35 | الكاتب الأصلى : أسامة البسومي | المصدر : www.arabopn.com

    كلمات مفتاحية  :
    برامج SQL PLUS

    بسم الله الرحمن الرحيم
    الدرس السابع


    نستأنف اليوم ما بدأنا به سابقا ونكمل كيفية التعامل مع جملة Select stament
    فكما قلت هي الاساس في استعراض البيانات واستغلال الفانكشن التي تم شرحها بالسابق تعطي قصر للوقت وعرض صحيح للبيان الصحيح

    سوف نستعرض اليوم ال Subqueries او ما يسمى بجمل ال selectالمتداخلة وهي تأتي بأشكال متعددة نذكر اشهرها وما يمكن التعامل معها

    اشكال ال Subqueries

    1- WHERE CONDITION

    رمز:
    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 متوافقة بحيث لايجوان ان تقول

    رمز:
    where cols.column_name in (select * from table_name)

    ويوجد نوعين آخرين سوف يتم توضحهما فيما بعد ان شاء الله
    وهذا مثال توضحيح على ما سبق
    اعرض اسم الموظف ورقمه على ان يكون الموظفين في الادراة العامة

    رمز:
    SELECT EMP_NAME,EMP_NO FROM EMPLOYEES
    WHERE DPT_NO IN (SELECT DPT_NO FROM DEPARTMENTS
    WHERE DPT_NAME='الادرارة العامة'

    هنا سوف يعرض اسماء الموظفين الذين ينتمون الى الادارة رقم 10 مثلا على ان تكون هذه الادارة ضمن جملة ال SELECT الثانية وتكون اسمها الادارة العامة

    * UNION Query
    ويقصد بها دمج استعلامين لحقلين متشابهين او اكثر في جدولين مختلفين
    ويستفاد منها بعدم اظهار البيانات المتكررة على ان يكون عدد الحقول في الجدول الاول مساوي لعدد الحقول للجدول الثاني

    رمز:
    select field1, field2, . field_n
    from tables
    UNION
    select field1, field2, . field_n
    from tables;

    مثال

    رمز:
    select supplier_id
    from suppliers
    UNION
    select supplier_id
    from orders;


    استخدام With ORDER BY Clause مع union
    توضع في اخر ال unio وممن ان ترمز لاسم الحقل الاول برقم 1وهكذا

    رمز:
    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 ولكن تعرض جميع البيانات في الجدولين مع التكرار

    رمز:
    select field1, field2, . field_n
    from tables
    UNION ALL
    select field1, field2, . field_n
    from tables;

    مثال

    رمز:
    select supplier_id
    from suppliers
    UNION ALL
    select supplier_id
    from orders;



    INTERSECT Query

    ومبدأ عمله يشبة ال union وهو دمج البيانات مع فارق انه يعرض البيانات الموجودة في الجدول الاول والتي غير موجودة في الجدول الثاني يعني يعرض الغير مكرر فقط
    select field1, field2, . field_n

    رمز:
    from tables
    INTERSECT
    select field1, field2, . field_n
    from tables;

    مثال

    رمز:
    select supplier_id
    from suppliers
    INTERSECT
    select supplier_id
    from orders;
    رمز:
    MINUS Query

    هي عملية ارجاع البيانات في الاستعلام الاول والغير موجود في الاستعلام الثاني

    رمز:
    select field1, field2, . field_n
    from tables
    MINUS
    select field1, field2, . field_n
    from tables;

    مثال

    رمز:
    select supplier_id
    from suppliers
    MINUS
    select supplier_id
    from orders;

    ويجب ان تكون عدد الحقول متشابهه والنوع كذلك
    ومعنى المثال السابق اعرض البيانات في جملة الاستعلام الاولى والغير موجودة بالاستعلام التالي
    كأن تقول نريد ان نعرض اسماء الموردين الذين لم يتم الطلب على منتجاتهم

    الأسئلة

    1-بين استخدام Union في جملة Select
    2-بين استخدام ال count في union
    3-ما الفرق بين INTERSECT Query و Minus Query

    انتهت الاسئلة


    رمز:
    انتهى الدرس السابع
    كلمات مفتاحية  :
    برامج SQL PLUS

    تعليقات الزوار ()