Mailinglisten-Archive |
Hi Wenn du mir die Tabelle und ein paar Testdaten schickst, kann ich die untere Query noch mal ueberpruefen. Ansonsten muesste sie so ungefaehr funktionieren. Ggf. muss die 1 noch gegen eine 2 ausgetauscht werden. Brauchst aber MySQL 4.1.1 Voraussetzung: id ist PRIMARY KEY Idee: Loesche alle die Ids, fuer die es am selben Startdatum fuer das selbe Zimmer mehrere Belegungen gibt, die eine kleiner Id haben. DELETE FROM Belegung WHERE id IN ( SELECT b2.id FROM Belegung b1, Belegung b2 WHERE b1.zim_id = b2.zim_id AND b1.dat_start = b2.dat_start AND b1.id <= b2.id AND 1 < ( SELECT COUNT(*) FROM Belegung bi WHERE bi.zim_id = b1.zim_id AND bi.dat_start = b1.dat_start AND bi.id BETWEEN b1.id AND b2.id ) ) Hermann Kuffner schrieb: > Hallo, > Kann mir jemand bei folgendem Problem helfen: > Ich habe eine Zimmerbelegungstabell (belegung) und muß jetzt doppelte > Einträge löschen, via select ist sind die Doppelten einfach zu finden: > > SELECT id, objekt_id, zim_id, count(dat_start), dat_start, dat_stop > FROM > belegung > WHERE > zim_id = zim_id > group by zim_id, dat_start > having count(dat_start) > 1 > > Aber wie mache ich jetzt da ein delete draus, das mir möglichst auch die > bis auf einen löscht, die 3 und 4-fach vorhanden sind? > > Danke > > Hermann > > > -- Software-Tomography - we make the invisible visible! Jan Kuehl Software-Tomography GmbH Karlstr.7 D-03044 Cottbus e-Mail: jan.kuehl at software-tomography.com http://www.software-tomography.com Phone: +49 (0355) 4945077 ----------------------------
php::bar PHP Wiki - Listenarchive