بتاريخ: 11 فبراير 200917 سنة comment_149015 السلام عليكم ورحمه الله وبركاتهكنت عاوز اعرف شرح الطريقه دي لاني مش فاهم معناها ايه بصراحه في حذف القيم المكرره من الجدوليعني نفترض اننا كرريتنا جدول كالاتي 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 فبراير 200917 سنة بواسطة waleed.ita تقديم بلاغ
بتاريخ: 12 فبراير 200917 سنة كاتب الموضوع comment_149071 ايه يا جماعه محدش عارف ولا مستخسرين تشرحوها تقديم بلاغ
بتاريخ: 14 فبراير 200917 سنة comment_149170 السلام عليكم ورحمه الله وبركاتهكنت عاوز اعرف شرح الطريقه دي لاني مش فاهم معناها ايه بصراحه في حذف القيم المكرره من الجدوليعني نفترض اننا كرريتنا جدول كالاتي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 فبراير 200917 سنة بواسطة TROYMAN تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.