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

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

صورة
- - - - -

حذف السجلات المتكررة والمتشابه تماما


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

#1 RDBMS

RDBMS

    مشترك

  • الأعضــاء
  • 107 مشاركة
  • الاسم الأول:--
  • اسم العائلة:---
  • البـلـد: Country Flag

تاريخ المشاركة 20 July 2011 - 12:44 PM

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

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

اثناء بحثي للمنتدى وجدت الرابط التالي

http://www.araboug.o...
الا انه اثناء تجربتي لبعض الاستعلامات فانه يقوم بحذف سجلات اكثر من عدد السجلات المتكررة

فلو سمحتم ممكن بطريقة عاجلة استعلام يمكنني من حذف السجلات المتكررة والمتشابه تماماجزاكم الله خيرا


مع خالص التحية

#2 ahmedbb

ahmedbb

    عضو مميز

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

تاريخ المشاركة 20 July 2011 - 03:48 PM

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

"وفوق كل ذى علم عليم"
برامج من انتاجى
شئون العاملين - الحضور و الانصراف - الاستحقاقات و الاجور
ادارة المراكز التدريبية - متابعة الانتاج - ادارة المستشفيات والعيادات - نظام ادارة المعارض ونقاط البيع
برنامج ادارة حركة السيارات - برنامج ادارة المكتبات - برنامج إدارة المدارس والمعاهد
من مواضيعى:
منادة المنيو من اى مكان http://www.araboug.o...nu&fromsearch=1
ايجاد اجمالى حقل معين فى فورم تابلور http://www.araboug.o...showtopic=50174
الوظيفة
Oracle Developer - Data Base Administrator - Programmer

Oracle Instructor

اسكاى بى ahmedoracle74
ahmedbb_work@hotmail
ahmedbb_work@yahoo

 

00201208042608

 

00201142271287
القاهرة - مصر




احمد محمود


#3 RDBMS

RDBMS

    مشترك

  • الأعضــاء
  • 107 مشاركة
  • الاسم الأول:--
  • اسم العائلة:---
  • البـلـد: Country Flag

تاريخ المشاركة 20 July 2011 - 09:28 PM

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



بالبداية اشكرك اخي الكريم ع الرد السريع وبارك الله فيكم

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

فلو تفضلتم ترشدوني الى اي من الاستعلامات المذكورة تكون اكثر دقة

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

#4 jadquraan

jadquraan

    عضو نشط

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

تاريخ المشاركة 21 July 2011 - 12:07 AM

السلام عليكم

لو تفهم الطريقة رح تعملها لحالك

اقولك كيف

اول شي اعمل select تجيب السجلات المتشابه حسب الاعمدة اللي انت تحددها

مثال

نفرض انه عندي جدول اسمه table1 وفي الاعمدة التالية وهي مجال البحث ( التأكد من انها غير مكررة )
test1,test2,test3,test4

والآن الـ select اللي تحدد انه يوجد في تكرار


select count(*), test1,test2,test3,test4 from table1
group by test1,test2,test3,test4
having count(*) >1


هذه الجملة تجلب لك البيانات المتكررة فقط

الان يمكنك تنفيذ عملية الحذف كالتالي




delete from table1 
where test1 in 
 
(
select count(*), test1,test2,test3,test4 from table1
group by test1,test2,test3,test4
having count(*) >1

)



إذا أعجبك قولي فلا تقل شكـراً ...
بل قل الآتـي ::
اللهم اغفر له ولوالديه ولزوجته وابنائه ولأخوانه واخواته ولسائر المسلمين والمسلمات ما تقدم من ذنبهم وما تأخر..
وقِهم عذاب القبر وعذاب النار..
و أدخلهم الفردوس الأعلى مع الأنبياء والشهداء والصالحين ..
واجعل دعاءهم مستجاب في الدنيا والآخرة ..
اللـهم آميـن..اللـهم آميـن..اللـهم آميـن..


اخوكم جاد القرعان
الأردن- الطفيلة
مبرمج نظم
جامعة الطفيلة التقنية
vb6,vb.net,aspx with ajax,oracle 10g (sql,plsql,forms,reports) ,
oracle database administrator(DBA)
oracle application server administrator
web application administrator
jadquraan@yahoo.com
jadquraan@ttu.edu.jo
00962777935393

CV


#5 RDBMS

RDBMS

    مشترك

  • الأعضــاء
  • 107 مشاركة
  • الاسم الأول:--
  • اسم العائلة:---
  • البـلـد: Country Flag

تاريخ المشاركة 21 July 2011 - 07:41 AM

السلام عليكم

لو تفهم الطريقة رح تعملها لحالك

اقولك كيف

اول شي اعمل select تجيب السجلات المتشابه حسب الاعمدة اللي انت تحددها

مثال

نفرض انه عندي جدول اسمه table1 وفي الاعمدة التالية وهي مجال البحث ( التأكد من انها غير مكررة )
test1,test2,test3,test4

والآن الـ select اللي تحدد انه يوجد في تكرار


select count(*), test1,test2,test3,test4 from table1
group by test1,test2,test3,test4
having count(*) >1


هذه الجملة تجلب لك البيانات المتكررة فقط

الان يمكنك تنفيذ عملية الحذف كالتالي




delete from table1 
where test1 in 
 
(
select count(*), test1,test2,test3,test4 from table1
group by test1,test2,test3,test4
having count(*) >1

)



في البداية جزاكم الله خيرا والله يوفقك انت واولادك وزوجتك وسائر المسلمين


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

ttoo many values-ora913

بيه مشكلة بعدد الاعمدة مع اني اخترت عمود واحد فقط

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

)

#6 jadquraan

jadquraan

    عضو نشط

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

تاريخ المشاركة 25 July 2011 - 02:32 PM

اخي العزيز


اعتذر عن الخطأ وهو كالتالي


في جملة الاستعلام الثانية يجب تحديد نفس عدد الاعمدة في جملة الحذف ويصبح الكود كما يلي


delete from table1
where test1 in
(
select test1 from table1
group by test1,test2,test3,test4
having count
(*) >1
)

تم التعديل بواسطة jadquraan, 25 July 2011 - 02:35 PM.



إذا أعجبك قولي فلا تقل شكـراً ...
بل قل الآتـي ::
اللهم اغفر له ولوالديه ولزوجته وابنائه ولأخوانه واخواته ولسائر المسلمين والمسلمات ما تقدم من ذنبهم وما تأخر..
وقِهم عذاب القبر وعذاب النار..
و أدخلهم الفردوس الأعلى مع الأنبياء والشهداء والصالحين ..
واجعل دعاءهم مستجاب في الدنيا والآخرة ..
اللـهم آميـن..اللـهم آميـن..اللـهم آميـن..


اخوكم جاد القرعان
الأردن- الطفيلة
مبرمج نظم
جامعة الطفيلة التقنية
vb6,vb.net,aspx with ajax,oracle 10g (sql,plsql,forms,reports) ,
oracle database administrator(DBA)
oracle application server administrator
web application administrator
jadquraan@yahoo.com
jadquraan@ttu.edu.jo
00962777935393

CV


#7 Mahmoud Ahmed El-Sayed

Mahmoud Ahmed El-Sayed

    عضو نشط

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

تاريخ المشاركة 12 August 2011 - 01:17 PM

Hi,
try this code that delete duplicated records except one record of them
DELETE FROM table1
  	WHERE ROWID IN (
           	SELECT rwid
             	FROM (SELECT ROWID rwid,
                          	ROW_NUMBER () OVER (PARTITION BY test1, test2, test3)
                                                                       	rn
                     	FROM table1)
            	WHERE rn > 1)

which table1 is Table name,
test1, test2 ,test3 is the matched table data that you want to delete redundant of them.

تم التعديل بواسطة mah6326955, 12 August 2011 - 01:19 PM.

Mahmoud Ahmed El-Sayed

Senior Oracle Forms & ADF developer @ MCIT

Dive in Oracle Blog


#8 Mahmoud Ahmed El-Sayed

Mahmoud Ahmed El-Sayed

    عضو نشط

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

تاريخ المشاركة 12 August 2011 - 01:23 PM

Hi,
You can use another solution that doesn't use analytical functions


 
DELETE FROM table1
  	WHERE ROWID IN (
           	SELECT ROWID
             	FROM table1 t
            	WHERE EXISTS (
                     	SELECT 1
                       	FROM table1
                      	WHERE test1 = t.test1
                        	AND test2 = t.test2
                        	AND test3 = t.test3
                        	AND ROWID > t.ROWID));


Mahmoud Ahmed El-Sayed

Senior Oracle Forms & ADF developer @ MCIT

Dive in Oracle Blog