Mailinglisten-Archive |
On Fri Sep 13, 2002 at 11:5046PM -0000, Alex Bamesreiter wrote: > Hi Leute, > ich kämpfe mit Dubletten. Aus einer importierten (wohl durch Programmfehler > etwas verwüsteten) dBase Datei möchte ich in MySQL zwei Arten von Dubletten > entfernen: > - Die 2 mal eingetragenen Leute mit gleicher Kundennummer und Name > (Name,Vormame,Kd_Nr identisch ) einen Datensatz davon löschen. Der andere > soll bleiben. > - Die unterschiedlichen Leute mit identischer Kundennummer sollen die 2. > Datensätze jeweils in eine andere Tabelle oder so um nachher neu mit eigener > Kd_Nr angelegt zu werden . > Beispiel: > Name Vorname Kd_Nr Datensatznr. > Muster Maik 123 1 (diesen stehen lassen) > Muster Maik 123 2 (diesen löschen) > Muster Klaus 138 3 (dieser bleibt) > Schulze Heinz 138 4 (Dieser kriegt 'ne neue Kd_Nr oder soll in > ne andere Tabelle) > > Die doppelten Kundennummern bekomm ich schon abgefragt (SELECT KD_NR, > Count(KD_NR) AS Anzahl FROM STAMM GROUP BY KD_NR HAVING Anzahl>1; und kann > dan?n eine 2. Abfrage dazu laufe lassen mit allen betroffenen > Kundennummer?n. Aber davon jeden 2. löschen?? Wenn dann wuerde ich _alle_ rueberkopieren in die Tabelle zum neu anlegen und _alle_ in der alten Tabelle loeschen. 1. Woher willst du wissen, welcher der beiden der rechtmaessige Inhaber der Kundennummer ist? 2. Hast du die Gewissheit, wenn jemand was mit der alten Kundennummer bestellt, das er dann nen Fehler gemacht hat, und du kannst dann die richtige neue Kundennummer nachsehen. Wenn du aber die alte Kundennummer bestehen laesst, koennte es zu weiteren Problemen kommen ... Wenn du es trotzdem machen willst: Kopier alle diese Datensaetze komplett in eine zweite Tabelle, und dann: (Pseudocode) alle=Select <Schluesselkandidat> from TEMP_Tabelle order by Kundennummer foreach (alle) { if (Rownum % 2) /* damit kriegst du jeden zweiten Datensatz */ { delete from kundentabelle where(schluesselfelder==alle.schluesselfelder) } } Evtl. brauchst du Fallunterscheidungen, wenn du nicht nur Doubletten hast, sondern Kundennummern auch dreimal, viermal oder oefter vorkommen. -- Michael Bergbauer <michael_(at)_noname.franken.de> use your idle CPU cycles - See http://www.distributed.net for details. Visit our mud Geas at geas.franken.de Port 3333 --- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive