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

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

صورة
- - - - -

مطلوب : ايجاد اصغر تاريخ بداية الاجازة واكبر تاريخ نهاية


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

#1 dreamland

dreamland

    عضو

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

تاريخ المشاركة 01 April 2012 - 10:37 AM

السلام عليكم ورحمة الله وبركاته
اخواني الاعزاء في المنتدى ارجو مساعدتي في مشكلتي

لدي جدول كالتالي رقم الموظف اسمه تاريخ بداية الاجازة تاريخ نهاية الاجازة
1 احمد 1/1/2009 31/12/2009
1 احمد 1/1/2010 31/12/2010
2 محمد 1/5/2005 30/4/2006
2 محمد 1/5/2006 30/4/2006
2 محمد 1/1/2008 31/12/2008
2 محمد 1/1/2009 31/12/2009

علي ايجاد اصغر تاريخ بداية الاجازة واكبر تاريخ نهاية اذا كانت الاجازة متصلة مثلا عند الموظف احمد تاريخ البداية هو 1/1/2009 وتاريخ النهاية 31/12/2010 اما عند الموظف محمد فان تاريخ البداية هو 1/1/2008 وتاريخ النهاية 31/12/2009 عن طريق عمل function ولكم جزيل الشكر مقدما وارجو ان اجد الاجابة

#2 Mahmoud Ahmed El-Sayed

Mahmoud Ahmed El-Sayed

    عضو نشط

  • الأعضــاء
  • 346 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Database Design, Programming and Sports

تاريخ المشاركة 01 April 2012 - 11:54 AM

السلام عليكم ورحمة الله وبركاته
اخواني الاعزاء في المنتدى ارجو مساعدتي في مشكلتي

لدي جدول كالتالي رقم الموظف اسمه تاريخ بداية الاجازة تاريخ نهاية الاجازة
1 احمد 1/1/2009 31/12/2009
1 احمد 1/1/2010 31/12/2010
2 محمد 1/5/2005 30/4/2006
2 محمد 1/5/2006 30/4/2006
2 محمد 1/1/2008 31/12/2008
2 محمد 1/1/2009 31/12/2009

علي ايجاد اصغر تاريخ بداية الاجازة واكبر تاريخ نهاية اذا كانت الاجازة متصلة مثلا عند الموظف احمد تاريخ البداية هو 1/1/2009 وتاريخ النهاية 31/12/2010 اما عند الموظف محمد فان تاريخ البداية هو 1/1/2008 وتاريخ النهاية 31/12/2009 عن طريق عمل function ولكم جزيل الشكر مقدما وارجو ان اجد الاجابة


suppose that structure of your table (EMP) as below
empno
start_date
end_date

you can do by below query


  SELECT t1.empno, MIN (t1.start_date), MAX (t1.end_date)
    FROM emp t1
   WHERE EXISTS
		    (SELECT 1
			   FROM emp t2
			  WHERE t1.empno = t2.empno
				    AND (t1.start_date - 1 = t2.end_date
						 OR t1.end_date = t1.start_date - 1))
GROUP BY t1.empno


Mahmoud Ahmed El-Sayed

Senior Oracle Forms & ADF developer @ MCIT

Dive in Oracle Blog


#3 dreamland

dreamland

    عضو

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

تاريخ المشاركة 01 April 2012 - 12:57 PM

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

1 احمد 1/1/2009 31/12/2010

2 محمد 1/5/2005 30/4/2006

2 محمد 1/1/2008 31/12/2009
لاني اريد ان احصل على تاريخ بداية ونهاية لكل اجازة متصلة على حدى

#4 Mahmoud Ahmed El-Sayed

Mahmoud Ahmed El-Sayed

    عضو نشط

  • الأعضــاء
  • 346 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Database Design, Programming and Sports

تاريخ المشاركة 01 April 2012 - 01:21 PM

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

1 احمد 1/1/2009 31/12/2010

2 محمد 1/5/2005 30/4/2006

2 محمد 1/1/2008 31/12/2009
لاني اريد ان احصل على تاريخ بداية ونهاية لكل اجازة متصلة على حدى


Sorry I misunderstand your requirement
I think that you want to get only one record per every employee

kindly send me your table structure and insert script for sample data to help you

Mahmoud Ahmed El-Sayed

Senior Oracle Forms & ADF developer @ MCIT

Dive in Oracle Blog


#5 Mahmoud Ahmed El-Sayed

Mahmoud Ahmed El-Sayed

    عضو نشط

  • الأعضــاء
  • 346 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Database Design, Programming and Sports

تاريخ المشاركة 01 April 2012 - 01:24 PM

You can also check this


  SELECT DISTINCT
		 t1.empno,
		 LEAST (t1.start_date, t2.start_date) start_date,
		 GREATEST (t1.end_date, t2.end_date) end_date
    FROM emp t1, emp t2
   WHERE t1.empno = t2.empno
		 AND (t1.start_date - 1 = t2.end_date
			  OR t1.end_date = t1.start_date - 1)
GROUP BY t1.empno

Mahmoud Ahmed El-Sayed

Senior Oracle Forms & ADF developer @ MCIT

Dive in Oracle Blog


#6 dreamland

dreamland

    عضو

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

تاريخ المشاركة 01 April 2012 - 01:25 PM

شكرا على الرد
انا اعمل على oracle hrms

#7 Mahmoud Ahmed El-Sayed

Mahmoud Ahmed El-Sayed

    عضو نشط

  • الأعضــاء
  • 346 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Database Design, Programming and Sports

تاريخ المشاركة 01 April 2012 - 01:51 PM

شكرا على الرد
انا اعمل على oracle hrms


you can use toad to generate table script and generate insert statement script

I want you check this query

SELECT DISTINCT
                 t1.empno,
                 LEAST (t1.start_date, t2.start_date) start_date,
                 GREATEST (t1.end_date, t2.end_date) end_date
    FROM emp t1, emp t2
   WHERE t1.empno = t2.empno
                 AND (t1.start_date - 1 = t2.end_date
                          OR t1.end_date = t1.start_date - 1)
GROUP BY t1.empno

Mahmoud Ahmed El-Sayed

Senior Oracle Forms & ADF developer @ MCIT

Dive in Oracle Blog