waleed.ita بتاريخ: 11 فبراير 2009 تقديم بلاغ مشاركة بتاريخ: 11 فبراير 2009 (معدل) السلام عليكم ورحمه الله وبركاتهكنت عاوز اعرف شرح الطريقه دي لاني مش فاهم معناها ايه بصراحه في حذف القيم المكرره من الجدوليعني نفترض اننا كرريتنا جدول كالاتي create table emp (val_1 int,val_2 int,val_3 int) insert into emp values (1,2,3) وكررناها مثلا اي عدددلوقت لو جربنا الطريقه دي فعلا هتمسح القيم المكرره وتسيب raws واحد بس فيه القيم 1و2و3 delete from emp where rowid <> ( select max(rowid) from emp a where a.val_1 = emp.val_1 and a.val_2 = emp.val_2 and a.val_3 = emp.val3 ) ممكن شرح ليهاممكن بطريقه تانيه وانا عرفها اللي هي delete from emp where (rowid, val_1) not in (select min(rowid), val_1 from emp group by val_1); تم تعديل 11 فبراير 2009 بواسطة waleed.ita اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
waleed.ita بتاريخ: 12 فبراير 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 12 فبراير 2009 ايه يا جماعه محدش عارف ولا مستخسرين تشرحوها اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
TROYMAN بتاريخ: 14 فبراير 2009 تقديم بلاغ مشاركة بتاريخ: 14 فبراير 2009 (معدل) السلام عليكم ورحمه الله وبركاتهكنت عاوز اعرف شرح الطريقه دي لاني مش فاهم معناها ايه بصراحه في حذف القيم المكرره من الجدوليعني نفترض اننا كرريتنا جدول كالاتيcreate table emp (val_1 int,val_2 int,val_3 int) insert into emp values (1,2,3) وكررناها مثلا اي عدددلوقت لو جربنا الطريقه دي فعلا هتمسح القيم المكرره وتسيب raws واحد بس فيه القيم 1و2و3 delete from emp where rowid <> ( select max(rowid) from emp a where a.val_1 = emp.val_1 and a.val_2 = emp.val_2 and a.val_3 = emp.val3 ) ممكن شرح ليهاممكن بطريقه تانيه وانا عرفها اللي هي delete from emp where (rowid, val_1) not in (select min(rowid), val_1 from emp group by val_1); السلام عليكم...بالنسبة للسؤال هو سؤال غير منطقي بالنسبة للمعطيات يلي حاططها.. لازم يكون في بالجدول مميز(مفتاح أساسي مثلاً) نقدر عن طريق نتحكم بالسجلات.أما بالنسبة للحلين يلي حاططهون.. للأسف الحلين خاطئين.. delete from emp where rowid <> ( select max(rowid) from emp a where a.val_1 = emp.val_1 and a.val_2 = emp.val_2 and a.val_3 = emp.val3 ) هذا الحل صحيح فقط في حالة أن الجدول يحوي على نوع واحد من السجلات المكررة..يعني إذا كان الجدول يحوي على أكثر من مجموعة (1,2,3)&(4,5,6)بيعطي نتائج خاطئة..وبدون ما تجربها مبينة..متل مالك شايف بالكود..رح يجيب أكبر Rowid لنفس المجموعة حسب الكوريليتد و رح يحذف كلشي أصغر من هل الرقم حتى لو كان بغير مجموعة..لمّا يجي بدو يفوت بتاني كوريليتد ما حيلاقي سجلات يفحصها... delete from emp where (rowid, val_1) not in (select min(rowid), val_1 from emp group by val_1); كمان هاد غلط..إذا بتحطلو مجموعتن من السجلات مشتركة بقيمة أول حقل بيحذف كل المجموعتين...يعني جرب حطلو (1,2,3) & (1,2,4) ..إذا كتير مضطر عليها..فيك تعملو بروسيدجر بسيط...و السلام ختام... تم تعديل 14 فبراير 2009 بواسطة TROYMAN اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.