الانتقال إلى المحتوى

Select TOP 1


Mn_902

Recommended Posts

السلام عليكم ورحمه الله وبركاته

هل من طريقة للاستعلام من جدول
ليحضر لي سجل واحد فقط من مجموعه سجلات مستعلمة

مثال

GET_INF " SELECT TOP 1 * 
          FROM CPIS_EMPLOYEES_POSITIONS 
          WHERE ID_EMPL='" & Me.ID_EMPL & "'" _
           & " AND   START_DT<=" & (Me.FROM_HDT) _
           & " ORDER BY ID_EMPL,START_DT DESC;" 




هذا الكود من الاكسس يحضر لي سجل واحد فقط من الاسفل
هل من طريقة مماثلة في الاوركل
بارك الله فيكم

رابط هذا التعليق
شارك

إضافة إلى ما بينه لك أخي chayah .. أحب أن أوضح لك الأمــر حتى تستفيد أكثر,

إن تحديد عدد السجلات المراد استرجاعها يتم عن طريق العمود "الخفي" ROWNUM - والذي لايظهر إلا في حال إضافته في SELECT clause كما هو واضح في مثال أخي chayah
وعليه، فأن الأمــر يرجع إليك في إظهار قيمة ROWNUM.

أما في ما يخص الإسترجاع من أسفل أو من أعلى: فإن ROWNUM ليس لها علاقة بالموضوع بتاتاً!! إنا يتم التحكم في ذلك بواسطة ORDER BY DESC/ASC clause

لكن هنالك أمر مهم يجب وضعه في الإعتبار .. وهو أن عملية الترتيب بواسطة ORDER BY تتم بعد تحرير أو إنشاء قيم ROWNUM ، ولذلك إذا كنت تود الحصول على أعلى/أقل رواتب مثلاً يجب عليك ترتيب المرتبات أولاً (DESC أو ASC كما تعلم تتحكم فيما إذا كان الترتيب تصاعدي/تنازلي "أعلى/أسفل") في شكل subquery كما هو موضح في المثال أعلاه، ثم بعد ذلك إستخدام قيمة ROWNUM لتحديد ما إذا كانت تريد استرجاع أعلى/أقل 1،2،3... راتب في WHERE clause

ملاحيظ:
* العلاقة التي تلي ROWNUM في WHERE clause دائما تكون "أصغر/أقل من" أو "BETWEEN" لكن يجب أن ان تكون القيمة الأولى عند استخدام BETWEEN هي 1 أو 0 أو رقم سالب !!!

* يجب أن تضع قيمة NULL في الإعتبار في حال الترتيب على حسب قيمة الأعلي !! لأن NULL تأتي في المرتبة الأولى !! ولذلك إذا كنت لا ترغب في استرجاع السجلات التي تحتوي على NULL ببساطة أضف:
AND <column_name> IS NOT NULL

تم تعديل بواسطة عروة
رابط هذا التعليق
شارك

  • بعد 5 سنة...

كيف اسوي نفس العمليه لاستعلم عن اخر موظفين اثنين عندي
اي اخر من توظف عندي
واسف لاني مبتداء الرجاء اذا وجدت اجابه هذا الايميل تبعي [email protected]
ومشكور اخي العزيز :)

رابط هذا التعليق
شارك

كيف اسوي نفس العمليه لاستعلم عن اخر موظفين اثنين عندي
اي اخر من توظف عندي
واسف لاني مبتداء الرجاء اذا وجدت اجابه هذا الايميل تبعي [email protected]
ومشكور اخي العزيز
================================================================

select emp_name
from emps
where ROWNUM <=2 and hire_date is not null
order by hire_date desc 

رابط هذا التعليق
شارك


كيف اسوي نفس العمليه لاستعلم عن اخر موظفين اثنين عندي
اي اخر من توظف عندي
واسف لاني مبتداء الرجاء اذا وجدت اجابه هذا الايميل تبعي [email protected]
ومشكور اخي العزيز
================================================================
select emp_name
from emps
where ROWNUM <=2 and hire_date is not null
order by hire_date desc


السلام عليكم

Select Empno From (Select Empno, Rank() Over(Order By Hiredate Desc) As Seq
                    From Scott.Emp)  
Where Seq <= 2



أو بطريقة أسهل:

 Select Empno From(
Select Empno
  From Scott.Emp
 Order By Hiredate Desc)
 Where Rownum < 3



بالتوفيق.

رابط هذا التعليق
شارك

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

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

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

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

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