phpbar.de logo

Mailinglisten-Archive

Doppelte Einträge finden und löschen

Doppelte Einträge finden und löschen

Jan Kuehl jan.kuehl at software-tomography.com
Mit Mai 26 18:25:14 CEST 2004


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