الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

الدرس الثامن

Featured Replies

بتاريخ:

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



أخوانى فى الله .... كل عام و نحن الى الله اقرب و لطاعته افضل ان شاء الله .. اليوم سوف نتحدث عن درس هام جدا و هو الفصل السادس فى كتاب اوراكل .. الدرس بعنوان :

Using Subqueries to Solve Queries



وكى نفهم اهمية الدرس جيدا اود ان ابدأ الدرس بسؤال:

* طلب منك مديريك تقرير يسترجع أسم الموظف الذى يحصل على اقل مرتب .. كيف تقوم بعمل جملة ال Select التى ترجع بهذه النتيجه ؟؟؟! بالطبع لا يمكن عمل جمله واحده فقط و لكن عليك بعمل الأتى:

1- جمله تقوم باسترجاع اقل مرتب بالشركه كما يلى:



Select Min(salary)
From employees;


2 – بفرض ان اقل مرتب هو 2100 اذا يتم عمل جمله ثانيه حتى نستطيع معرفة اسم الموظف الذى يحصل على 2100 دولار و هو اقل مرتب كما يلى:



Select last_name , salary
From employees
Where salary = 2100;



هكذا يمكن الحصول على التقرير المطلوب ... و لكن كم هى عمليه شاقه جدا .. لهذا سوف نتعلم معا اليوم معنى الأستعلام الفرعى ( Subquery ) لحل مثل هذه المشكلات ..

** أولا: صيغة الـ Subquery :



SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table);



و بناءا على هذه الصيغه يمكن كتابة التقرير السابق فى جمله واحده كما يلى:



SELECT last_name , Salary
FROM Employees
WHERE salary =
(SELECT Min(salary)
FROM Employees);



اعتقد انها اسهل الأن .. فبدلا من ان نكتب جملتين فقد قمنا بكتابة جمله واحده فقط ...

** أنواع الأستعلام الفرعى : Types of Subqueries

1- Single-row subquery

المقصود بهذا النوع ان الأستعلام الفرعى يسترجع فقط صف واحد او قيمه واحده مثل اقل مرتب .

ومع هذا النوع يتم استخدام هذه المعاملات (Single-Row Subqueries )

= Equal to
> Greater than
>= Greater than or equal to
< Less than
<= Less than or equal to
<> Not equal to


مثال :



SELECT last_name, job_id, salary
FROM employees
WHERE job_id =
(SELECT job_id
FROM employees
WHERE employee_id = 141)
AND salary >
(SELECT salary
FROM employees
WHERE employee_id = 143);
--------------------------------------------------------------------
SELECT department_id, MIN(salary)
FROM employees
GROUP BY department_id
HAVING MIN(salary) >
(SELECT MIN(salary)
FROM employees
WHERE department_id = 50);



2- Multiple-row subquery

المقصود بهذا النوع ان الأستعلام الفرعى يسترجع أكثر من صف واحد او قيمه واحده مثل المرتبات التى تزيد عن 1000 دولار .

ومع هذه النوع نستخدم هذه المعاملات :



Operator Meaning
IN Equal to any member in the list
ANY Compare value to each value returned by the subquery
ALL Compare value to every value returned by the subquery


مثال:



SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary < ANY
(SELECT salary
FROM employees
WHERE job_id = 'IT_PROG')
AND job_id <> 'IT_PROG';

-------------------------------------------------------------
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary < ALL
(SELECT salary
FROM employees
WHERE job_id = 'IT_PROG')
AND job_id <> 'IT_PROG';




هذا و بالله التوفيق،،

المرفقات:

شرح الفصل من كتاب اوراكل
اسئلة الأمتحان على هذا الفصل

Les06.ppt

Subquery.pdf

بتاريخ:

اخي الاستاذ سامح اكرمك الله علي ما تقدمه الي شباب الامة حفظك الله وزادك من فضله
لقد تابعت الدروس مع حضرتك ولكن انن متوقف عند الدرس الرابع حيث يوجد جزء عندما اقوم بتنفيذه تكون النتيجة سلبية وها هي الجملة
SQL> select MONHS_BETWEEN('01-SEP-95','11-JAN-94')
2 " Date"
3 from dual;
select MONHS_BETWEEN('01-SEP-95','11-JAN-94')
*
ERROR at line 1:
ORA-00904: "MONHS_BETWEEN": invalid identifier

وهكذا باقي الدرس علي فكرة انا اعمل عليplus SQL

برجاء الافادة وشكراً لكم
اسامة عبد العزيز - مصر - الجيزة - هرم

بتاريخ:
  • كاتب الموضوع

أخى الفاضل هذا الخطأ يعنى انك كاتب اسم الداله خطأ ... الداله اسمها MONTHS_BETWEEN

شوف يا اسامه انت كاتبها ازاى ؟؟؟؟

جرب تانى و ان شاء الله تشتغل بس بعد التصحيح

بتاريخ:

الاخ العزيز الاستاذ سامح اكرمك الله وحفظك من كل سوء
لقد عرفت خطئي ولكن استاذي الفاضل بعد تصحيح الخطا لم يتغير شيء
الا انني قمت بتغير كتابة التاريخ مثلا من11- سبتمبر -95 طبعا بكتبها بالانجليزي كما تكتبونها
الي 11-09-95 اي كتبت التاريخ بالارقام وكانت الاجابة صحيحةوالحمد لله .
لكن السؤال هنا هو عندما قمت بتنفيذ الداله next- day وكتبت يوم الجمعة القادم لتاريخ ما اعطي لي error حيث تبن لي ان هناك تعارض بين الارقام والحروف
فما هو الحل اذن
وجزاكم الله خير الجزاء
وتفضلوا بقبول فائق الاحترام والتقدير

اسامة عبدالعزيز - 30 -12-2007

بتاريخ:

يعطيك العافيه على التفصيل والايضاح

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.