+ Antworten
Ergebnis 1 bis 11 von 11

Thema: [SQL] alle löschen bis auf die aktuellsten 15 Einträge

  1. #1
    TP-Junior #404 macht alles soweit korrekt
    Registriert seit
    Dec 2003
    Beiträge
    6

    [SQL] alle löschen bis auf die aktuellsten 15 Einträge

    Hallo ihr alle!

    ich hab irgendwie nen Problem:
    ich will aus einer Tabelle die die Profilbesuche in meinem Forum loggt
    PHP-Code:
    CREATE TABLE `fbb_profile_view` (
      `
    user_idmediumint(8NOT NULL default '0',
      `
    viewer_idmediumint(8NOT NULL default '0',
      `
    view_stampint(11NOT NULL default '0',
      `
    countermediumint(8NOT NULL default '0'
    TYPE=MyISAM
    regelmäßig per cron alle einträge für jede User_id löschen lassen bis auf die aktuellsten 15

    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

  2. #2
    TP-Veteran the-architect bringt sich richtig ein the-architect bringt sich richtig ein Avatar von the-architect
    Registriert seit
    Jun 2004
    Ort
    Stuttgart
    Beiträge
    1.397
    erst ein select um die ersten 15 zu bekommen, diese id's merken und dann ein delet hinterher. oder?

  3. #3
    TP-Junior #404 macht alles soweit korrekt
    Registriert seit
    Dec 2003
    Beiträge
    6
    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

  4. #4
    TP-Veteran the-architect bringt sich richtig ein the-architect bringt sich richtig ein Avatar von the-architect
    Registriert seit
    Jun 2004
    Ort
    Stuttgart
    Beiträge
    1.397
    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.

  5. #5
    TP-Junior #404 macht alles soweit korrekt
    Registriert seit
    Dec 2003
    Beiträge
    6
    ne ich such die 15 neusten pro user_id

  6. #6
    TP-Specialist mike bringt sich richtig ein Avatar von mike
    Registriert seit
    Jan 2002
    Ort
    TP/Dynamik
    Beiträge
    2.876
    tu dir selbst einen Gefallen und erweitere die Tabelle um einen timestamp. Verwende dann diesen um die aktuellsten 15 zu verschonen.
    Gehelft? Hier kannst du dich bedanken.

    mike

  7. #7
    TP-Insider loki ist auf einem guten Weg Avatar von loki
    Registriert seit
    May 2003
    Ort
    Aachen
    Beiträge
    720
    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


  8. #8
    TP-Specialist mike bringt sich richtig ein Avatar von mike
    Registriert seit
    Jan 2002
    Ort
    TP/Dynamik
    Beiträge
    2.876
    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.
    Gehelft? Hier kannst du dich bedanken.

    mike

  9. #9
    TP-Specialist Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Avatar von Stuck Mojo
    Registriert seit
    Feb 2001
    Ort
    Helmstedt/Wolfsburg
    Beiträge
    4.108
    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

  10. #10
    TP-Junior #404 macht alles soweit korrekt
    Registriert seit
    Dec 2003
    Beiträge
    6
    also limitieren an sich geht laut meiner tests

    aber diese LIMIT 15,XX geschichte geht nicht


    Zitat Zitat von mike
    tu dir selbst einen Gefallen und erweitere die Tabelle um einen timestamp. Verwende dann diesen um die aktuellsten 15 zu verschonen.
    den gibts schon (view_stamp)

  11. #11
    TP-Specialist mike bringt sich richtig ein Avatar von mike
    Registriert seit
    Jan 2002
    Ort
    TP/Dynamik
    Beiträge
    2.876
    aso. hat sich mir aufgrund des datentyps nicht gleich eröffnet
    Gehelft? Hier kannst du dich bedanken.

    mike

+ Antworten

Ähnliche Themen

  1. [Workshop] Formmailer
    Von mike im Forum Workshops und Tutorials
    Antworten: 93
    Letzter Beitrag: 29.01.2009, 11:34
  2. Der Herr Bush
    Von TobiasKa im Forum Einfach so ...
    Antworten: 15
    Letzter Beitrag: 07.12.2004, 20:26
  3. MySQL: alle einträge die mit 0 beginnen
    Von sf2006 im Forum Traum-Dynamik
    Antworten: 7
    Letzter Beitrag: 24.09.2004, 07:00
  4. Tüv
    Von webmichl im Forum Einfach so ...
    Antworten: 4
    Letzter Beitrag: 17.12.2002, 17:36

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51