حذف السجلات المتكررة
#1
سلام الله عليكم

أحاول مسح السجلات المتكررة وضعت هذا الكود في ADOquery ولكن لم يشتغل

PHP كود :
with adoquery1 do
 
begin
   Close
;
  
SQL.Clear;
    
SQL.Add('DELETE FROM BROADCAST.STATISTICS WHERE ROWID IN ');
     
SQL.Add('(SELECT ROWID FROM ( SELECT ROWID, ROW_NUMBER ( ) ');
    
SQL.Add('FROM ( SELECT ROWID, ROW_NUMBER ( ) OVER ( PARTITION BY COLONNE1 || COLONNE2 || COLONNE3 || COLONNE4 || COLONNE5 ORDER BY COLONNE1 || COLONNE2 || COLONNE3 || COLONNE4 || COLONNE5) num_ligne FROM BROADCAST.STATISTICS ) t2 WHERE  num_ligne > 1)');
   
ExecSQL;
   
end; 

مع العلم أن الكود صحيح عند تنفيذة في anager oracle
الرد
#2
توصلت إلى الحل

PHP كود :
with adoquery1 do
 
begin
   Close
;
   
SQL.Clear;
   
SQL.Add('DELETE FROM BROADCAST.STATISTICS');
   
sQL.Add('WHERE ROWID IN (SELECT ROWID FROM (SELECT ROW_NUMBER() OVER (PARTITION BY COLONNE1,COLONNE2,COLONNE3,COLONNE4,COLONNE5 ORDER BY COLONNE1,COLONNE2,COLONNE3,COLONNE4,COLONNE5 ) rnk ');
   
SQL.Add(' FROM  BROADCAST.STATISTICS)');
   
SQL.Add('WHERE rnk>1)');
   
ExecSQL;
   
end; 

شكرا لكم
الرد
#3
وعليكم السلام
طريقة أخرى:
http://www.delphi4arab.net/forum/showthr...p?tid=1790
الرد
#4
بارك الله فيك
حمدا لله على سلامتك وعودتك
إشتقنا لتوجيهاتك أخي كاش واحدSmile
الرد
#5
لديا قاعدة بيانات و أحذف المتكررات بهذه الطريقة ,الجدول يسمى ASSURE01
delete from assure01 t where t.nass in (select distinct nass from assure01 group by nass
having count(*) > 1
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم