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

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

Select TOP 1


6 رد (ردود) على هذا الموضوع

#1 Mn_902

Mn_902

    مشترك

  • الأعضــاء
  • 156 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 28 September 2005 - 09:11 AM

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

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

مثال
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;" 


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

#2 chayah

chayah

    مشترك

  • الأعضــاء
  • 68 مشاركة

تاريخ المشاركة 28 September 2005 - 09:51 AM

The high-level structure of a Top-N analysis query is:

SELECT [column_list], ROWNUM
FROM (SELECT [column_list]
FROM table
ORDER BY Top-N_column)
WHERE ROWNUM <= N;


#3 عروة

عروة

    عضو نشط

  • الأعضــاء
  • 403 مشاركة

تاريخ المشاركة 01 October 2005 - 12:43 PM

إضافة إلى ما بينه لك أخي 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

تم التعديل بواسطة عروة, 01 October 2005 - 12:47 PM.

وقولوا للناس حُسنا البقرة (83)

قال الإمام الشافعي رحمه الله: من وعظ أخاه سرا فقد نصحه وزانه ، ومن وعظه علانية فقد فضحه وعابه

صورة

#4 Mn_902

Mn_902

    مشترك

  • الأعضــاء
  • 156 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 04 October 2005 - 01:08 PM

يعطيكم الف عافية

ماشاء الله عليكم

#5 علوي2011

علوي2011

    عضو

  • الأعضــاء
  • 24 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 27 October 2010 - 04:00 AM

كيف اسوي نفس العمليه لاستعلم عن اخر موظفين اثنين عندي
اي اخر من توظف عندي
واسف لاني مبتداء الرجاء اذا وجدت اجابه هذا الايميل تبعي al-salami2000@hotmail.com
ومشكور اخي العزيز :)

#6 mahmoud afifi

mahmoud afifi

    مشترك

  • الأعضــاء
  • 129 مشاركة

تاريخ المشاركة 27 October 2010 - 12:05 PM

كيف اسوي نفس العمليه لاستعلم عن اخر موظفين اثنين عندي
اي اخر من توظف عندي
واسف لاني مبتداء الرجاء اذا وجدت اجابه هذا الايميل تبعي al-salami2000@hotmail.com
ومشكور اخي العزيز
================================================================
select emp_name
from emps
where ROWNUM <=2 and hire_date is not null
order by hire_date desc

OCP Forms 10g OCA PL/SQL
PowerBuilder Developer
SQL Server Administrator
.NET Developer
CCNA Certified


#7 Ahmad.Hasan

Ahmad.Hasan

    مشرف قسم الـ Forms & Reports والمشاريع

  • فريق الإشراف
  • 4,871 مشاركة
  • الاسم الأول:Ahmad
  • اسم العائلة:Hasan
  • البـلـد: Country Flag
  • المنصب الحالي:Oracle HCM Consultant

تاريخ المشاركة 27 October 2010 - 03:27 PM

كيف اسوي نفس العمليه لاستعلم عن اخر موظفين اثنين عندي
اي اخر من توظف عندي
واسف لاني مبتداء الرجاء اذا وجدت اجابه هذا الايميل تبعي al-salami2000@hotmail.com
ومشكور اخي العزيز
================================================================
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

بالتوفيق.

.Oracle E-Business Suite R12 HCM Certified Implementation Specialist

 

.Oracle Fusion Human Capital Management 11g Human Resources Certified Implementation Specialist