erst ein select um die ersten 15 zu bekommen, diese id's merken und dann ein delet hinterher. oder?![]()
Hallo ihr alle!
ich hab irgendwie nen Problem:
ich will aus einer Tabelle die die Profilbesuche in meinem Forum loggt
regelmäßig per cron alle einträge für jede User_id löschen lassen bis auf die aktuellsten 15PHP-Code:CREATE TABLE `fbb_profile_view` (
`user_id` mediumint(8) NOT NULL default '0',
`viewer_id` mediumint(8) NOT NULL default '0',
`view_stamp` int(11) NOT NULL default '0',
`counter` mediumint(8) NOT NULL default '0'
) TYPE=MyISAM;
sprich nach dem Durchlauf sollen pro User nur noch max. 15 Einträge in der Tabelle stehen
ich hab da schon etwas rumprobiert und auch ne Lösung, aber die hat ziemlich viele Anfragen und ist ein ziemlich fieses Kontrukt
bin eigentlich eher auf der suche nach was übersichtlichem
erst ein select um die ersten 15 zu bekommen, diese id's merken und dann ein delet hinterher. oder?![]()
ok wäre ne möglichkeit
aber wenn ich jetzt irgendwie 5000 user_ids habe und jedesmal die 15 raussuchen muss die nicht gelöscht werden sollen um dann alle anderen zu löschen stell ich mir ja stressig vor für den Server
nee. du suchst ja nur die neuesten 15 (so hab ich dich verstanden) und das sollte kein problem sein.
dann "delete from fbb_profile_view where id!='id1' or id!='id2' ...", usw.
ne ich such die 15 neusten pro user_id
tu dir selbst einen Gefallen und erweitere die Tabelle um einen timestamp. Verwende dann diesen um die aktuellsten 15 zu verschonen.
Kann man nicht irgendwas mit LIMIT drehen?
also sowas wie
DELETE FROM tabelle ORDER BY ID DESC LIMIT 15,$anz
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein
wohl kaum, da er das pro ID haben will.
Also wird eine Query mal so aus dem Bauch raus eh net reichen. Dann kann er das gleich 'gscheid' machen.
ergo UserIDs gruppiert raussuchen und dann pro Userlein ein delete absetzen.
P.S. Mit dem timestamp bin ich halt auf der sicheren/sauberen Seite der Logik.
Ab Version 4.0.0 kann man dem delete-statement ein order by mitgeben, was mit einem LIMIT zu schönen Ergenissen führen kann.Ob man dem LIMIT allerdings auch einen start-wert mitgeben kann, weiss ich nicht. -> http://dev.mysql.com/doc/mysql/en/DELETE.html
Gruss
Jan
also limitieren an sich geht laut meiner tests
aber diese LIMIT 15,XX geschichte geht nicht
den gibts schon (view_stamp)Zitat von mike
aso. hat sich mir aufgrund des datentyps nicht gleich eröffnet![]()
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)