Mailinglisten-Archive |
On Mon, Mar 04, 2002 at 10:00:08PM +0100, Danny wrote: <snip> > > """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" > $fis = mysql_query("select id, firma, plz, strasse from mytabelle group by > firma, plz, strasse HAVING count(*) > 1"); > > while($f=mysql_fetch_array($fis)){ > mysql_query("delete from mytabelle where id like '$f[id]'"); > } > > """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" damit schiesst du dir hoechstens alle doppelten komplett ab! ergo aus 2 mach 0, nicht 1 ... ausserdem solltest du ueber alle felder groupen, nach deren gleichheit du rausfischen willst. wenn beispielsweise alle finden willst, die mit firma + plz + strasse uebereinstimmen, so musst du nach diesen feldern gruppieren. ist denn die ID bei dir auch manchmal doppelt ? also der trick ist der: #1: nach den key-feldern (die du nicht mehr doppelt haben willst) gruppieren, alles rausholen, was count > 1 hat. #2: alles raussuchen, was mit dem in #1 aufgelistetem uebereinstimmt, das erste dabei auslassen. (offset 1) #3: die in #2 aufgelisteten rausfegen. um dir wirklich weiterhelfen zu koennen, brauche ich dein tabellenlayout und muss wissen, nach welchen feldern zu gruppieren ist ... > nach 30sec kommt timeout und es sind vielleicht 20 Datens?tze gel?scht :-(( set_time_limit ( -1 ); > Doppelte sind es ab 18.000 von 130.000 *schluchz* > > Wie kann ich alle doppelten aufeinmal l?schen ???????????????????? auf einmal geht nicht. aber du kannst die sache auch direkt in der db machen, indem du ueber temporaere tabellen schaufelst. ~-n -- Enrico Weigelt == meTUX IT services software development, IT service, internet security solutions www: http://www.metux.de/ phone: +49 36207 519931 email: contact_(at)_metux.de cellphone: +49 174 7066481
php::bar PHP Wiki - Listenarchive