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

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

صورة
- - - - -

حذف السجلات المكررة في جدول


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

#1 سالم الفروي

سالم الفروي

    عضو

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

تاريخ المشاركة 25 May 2008 - 08:07 PM

حذف السجلات المكررة من جدول



declare

  كورسور يجمع السجلات المكررة من جدول

   

 cursor target_cur is	select fcn	from   table1	group  by fcn	having count (fcn) > 1;

   

	hold_fcn varchar2(4);



  كورسور يستقبل حقل من السجل المكرر و يرتب البيانات تنازليا للابقاء على اخر سجل تم اضافته و حذف سابقيه



	cursor delete_cur (hold_fcn in varchar2) is   select fcn,  id  from   table1   where  fcn = hold_fcn 

 order  by id desc 	 for update nowait;

	   

   

	delete_rec delete_cur%rowtype;

	 

	first_fetch_sw varchar2(1);

   

begin

	open target_cur;

	

	loop

	

		fetch target_cur into hold_fcn;

		exit  when target_cur%notfound or

							  target_cur%notfound is null;

	   

		 

			open delete_cur (hold_fcn);

			first_fetch_sw := 'Y';

		  

			loop

				fetch delete_cur into delete_rec;

				exit  when delete_cur%notfound or

									  delete_cur%notfound is null;

			   

				if first_fetch_sw = 'Y' then

					first_fetch_sw := 'N';

				else

							

					delete from table1 where current of delete_cur;

				  

				end if;

			end loop;



			close delete_cur;

				  

	end loop;

	close target_cur;

  

	commit;

 

end;

حديث شريف : الايمان يمان و الحكمة يمانية


#2 MMA

MMA

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,019 مشاركة
  • الاسم الأول:Mostapha
  • اسم العائلة:Abd El-Salam
  • البـلـد: Country Flag
  • المنصب الحالي:المؤسسة المصرية لتبسيط العلوم - عضو مؤسس - مستشار تقني

تاريخ المشاركة 27 May 2008 - 03:31 PM

Create Table TBL

(

   TBL_ID Number(10),

   TBL_Name VarChar2(20),

   Constraint PK_TBL Primary Key(TBL_ID)

)

/



Insert Into TBL Values(1,'Ahmed');

Insert Into TBL Values(2,'Usif');

Insert Into TBL Values(3,'Sara');

Insert Into TBL Values(4,'Mohamed');

Insert Into TBL Values(5,'Ahmed');

Insert Into TBL Values(6,'Dina');

-- Ahmed من المفروض حذف السجل الذي يدعي --



Select * 

From TBL 

Where TBL_Name In(Select TBL_Name From TBL Group By TBL_Name Having Count(TBL_ID) > 1)

تم التعديل بواسطة MMA, 27 May 2008 - 03:33 PM.

مهندس/ مصطفي محمود عبد السلام   
العضو المؤسس بالمؤسسة المصرية لتبسيط العلوم
والمستشار التقني

(برمجيات - نظم معلومات - شبكات)

.

 

( 01098570165 )

.

.

.

( MMA_Programmer@Yahoo.com )

 


#3 Ahmed Farghaly

Ahmed Farghaly

    عضو نشط

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

تاريخ المشاركة 27 May 2008 - 08:19 PM

والحذف طبعاً يبقى كده :
delete emp where ename in (select ename from emp where ename in (select ename from emp group by ename having count(empno)>1))


جزاك الله خيرا.......
Oracle Developer

OCP

ومــا توفيـقــى إلا باللـــــه

#4 سالم الفروي

سالم الفروي

    عضو

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

تاريخ المشاركة 08 June 2008 - 05:20 PM

لكن المشكلة الاخ احمد ان هذا الكود يحذف السجلات المكررة مع السجل الاصلي
اي اذا كان هناك اي سجل مكرر اكثر من مرة يحذفه نهائيا

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

حديث شريف : الايمان يمان و الحكمة يمانية


#5 King Oracle

King Oracle

    مشرف قسم المشاريع

  • فريق الإشراف
  • 2,043 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 09 June 2008 - 09:08 AM

اخي الكريم / سالم

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

[سبحان الله وبحمده ... سبحان الله العظيم]


م.علاء الدين الجبالي
Oracle APPS HCM Techno Functional Consultant


مدونتي الخاصة ... ( للتواصل معكم )
http://aljabali2010.blogspot.com/

التواصل عبر السكايبي

araboug.org
or
aladdin_aljabali

للتواصل عبر الايميل ( الماسنجر )

aladdin2011@live.com

موبايل 1: 00966540873048 ( حاليا في السعودية)
موبايل 2: 00962798522832


اللهم لا علم لنا إلا ما علمتنا إنك أنت العليم الحكيم