الانتقال إلى المحتوى
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

بتاريخ:

عندي جدول EMP_POSTIONS يحتوي على هيستوري الموظف
ID_EMPL,GRADE,LVL(LEVEL),STAR_DT,ECT

اريد استعلام عن تاريخ 1/1/2005 ومافوق ويعطني آخر سجل للموظف

مثال
ID 001 GRADE 7 LVL 11 STARD_DT 6/4/2003
ID 001 GRADE 7 LVL 12 STARD_DT 6/4/2004
ID 001 GRADE 7 LVL 13 STARD_DT 6/4/2005 (هذا المطلوب)
ID 002 GRADE 9 LVL 1 STARD_DT 6/4/2002
ID 002 GRADE 9 LVL 2 STARD_DT 6/4/2003
ID 002 GRADE 9 LVL 3 STARD_DT 6/4/2004 (هذا الموظف لايدخل في الشرط سنة 2005)
ID 003 GRADE 8 LVL 12 STARD_DT 6/4/2004
ID 003 GRADE 8 LVL 13 STARD_DT 6/4/2005 (هذا الملطوب)

جربت هذه الطريقة وهي ناجحة ولكن يعطيني أول سجل

SELECT e. *
FROM EMP_POSITIONS e
WHERE e.AUTOMATICNO in
(SELECT AutomaticNo
FROM EMP_POSITIONS P
WHERE P.ID_EMPL=E.ID_EMPL
AND P.START_DT>=TO_DATE('2005/01/01','YYYY/MM/DD')
and rownum=1)



وإذا وضعت
ORDER BY P.ID_EMPL,P.START_DT DESC

تأتيني رسالة خطاء
ORA-00907: missing right parenthesis

ارجوا من لدية معرفة ان يحلها لي


والله ان شغلي واقف من اسبوع ولم استطع حلها

أملي في الله ثم فيكم

بتاريخ:

أخي الكريم
أرجو منك ارسال سكربت الجدول مع بعض الsample data فيه

لاني لا افهم المطلوب بالضبط
بالتوفيق

بتاريخ:

السلام عليكم ورحمة الله و بركاته
أخي الكريم
لقد قمت باشناء جدول مشابه لجدولك و ادخال بعض البيانات به

و لقد فهمت تقريبا انه يمكن ان يوجد لديك اكثر من سجل للموظف لديك في الجدول علي حسب الدرجة و المتسو الوظيفي

و انه من الممكن ان يكون موظف حصل علي اكثر من درجة او مستوي بعد تاريخ 1/1/2005

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

و لتحقيق ذلك يمكنك عمل الكويري الاتي

SELECT *  
FROM  EMP_POSTIONS D
WHERE D.STAR_DT>=TO_DATE('01/01/2005')
AND  D.STAR_DT =(SELECT MAX(C.STAR_DT) FROM EMP_POSTIONS C WHERE ID=D.ID)



و فيما يلي عرض للسيلكيت بشرط التاريخ فقط ثم بعد اضافة الشرط الأخر

SQL> SELECT *
 2  FROM  EMP_POSTIONS D
 3  WHERE D.STAR_DT>=TO_DATE('01/01/2005')
 4 ;

ID																			  
--------------------------------------------------------------------------------
 GRADE		LVL STAR_DT		   ECT									 
---------- ---------- ---------- ----------									 
003																			 
	 8		 14 04-06-2006												
																			
001																			 
	 7		 13 04-06-2005												
																			
003																			 
	 8		 13 04-06-2005												
																			

SQL> SELECT *
 2  FROM  EMP_POSTIONS D
 3  WHERE D.STAR_DT>=TO_DATE('01/01/2005')
 4  AND  D.STAR_DT =(SELECT MAX(C.STAR_DT) FROM EMP_POSTIONS C WHERE ID=D.ID);

ID																			  
--------------------------------------------------------------------------------
 GRADE		LVL STAR_DT		   ECT									 
---------- ---------- ---------- ----------									 
003																			 
	 8		 14 04-06-2006												
																			
001																			 
	 7		 13 04-06-2005												
																			



ارجو ان يكون هذا هو المطلوب

مع تمنياتي بالتوفيق

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

الله يجزاك خير لي عودة معك بعد صلاة الظهر

وجزاك الله خيرا

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

السلام عليكم

آسف عندما عرضت الحل للمسؤل قال لي عندي نقطة اضافية وهي مهمة ( النقطة الثانية في الأسفل)

المطلوب :-

استعلام لجميع الموظفين ويظهر لي سجل واحد (بشرط):
1.التاريخ البداية (START_DT)
2.وحالة الموظف EFF_ON_EMP
(C Cancle,N New,U Update)(تعديل الوظيفة , موظف جديد , ترك الوظيفة)
3.تاريخ القرار LTR_DT


مثال رقم الموظف 000056
تاريخ البداية(START_DT ) (20/11/1979)هذا متغير (PARAMETER)

ID_EMPL 000056 START_DT 01/12/1978 EFF_ON EMP "U" LTR_DT 19/12/1978
ID_EMPL 000056 START_DT 20/11/1979 EFF_ON EMP "U" LTR_DT 20/11/1979
ID_EMPL 000056 START_DT 20/11/1979 EFF_ON EMP "U" LTR_DT 29/12/1979 (هذا المطلوب)
ID_EMPL 000056 START_DT 28/10/1980 EFF_ON EMP "U" LTR_DT 08/02/1980
ID_EMPL 000056 START_DT 18/10/1980 EFF_ON EMP 'U" LTR_DT 08/11/1980
ID_EMPL 000056 START_DT 09/04/1983 EFF_ON EMP "U" LTR_DT 12/12/1979

وهكذا

الله لايحرمنا من خدماتكم
وارفقت السكربت

SCRIPT_TOAD.zip

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

آمل المحاولة اخي هاني سند

الله يوفقك

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

اخي هاني سند

هل الان تحاول فيها ام صرفت النظر عنها

مازلت انتظر ردك للتطمين

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

SELECT e. *
FROM EMP_POSITIONS e
WHERE e.AUTOMATICNO in
(SELECT AutomaticNo
FROM EMP_POSITIONS P
WHERE P.ID_EMPL=E.ID_EMPL
AND P.START_DT<=TO_DATE('1979/11/20','YYYY/MM/DD') 
AND P.LTR_DT IN
(SELECT MAX(LTR_DT)
FROM EMP_POSITIONS S
WHERE P.ID_EMPL=S.ID_EMPL
AND S.START_DT<=TO_DATE('1979/11/20','YYYY/MM/DD') 
)--and rownum=1
)



هذا حل اعتقد انه صحيح
بس بتأكد من البيانات

وشكرا لكم

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

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

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

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

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

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.