Archiv verlassen und diese Seite im Standarddesign anzeigen : [SQL] Jeder 11 Datenbankeintrag löschen.
Hallo,
da ich meine User Manuell auszahle gibt es eine Statistik für die User wann wie viel ausgezahlt wurde, diese habe ich per DESC LIMIT auf 10 Einträge gesetzt. Nun ist ja eigentlich alles was über 10 Einträge ist Datenmüll und diesen möchte ich gerne entfernen. Gibt es eine Möglichkeit das sobald bei jemanden mehr wie 10 Einträge in der Statistik sind die älteste Auszahlung gelöscht wird?
Benutzt wird das LKT-Auszahlungsaddon. Wenn jemand Ideen hat wie man es verwirklichen könnte würde ich mich sehr freuen.
Lieben Gruß.
rene_1992
18.04.2011, 16:51
Hallo,
da ich meine User Manuell auszahle gibt es eine Statistik für die User wann wie viel ausgezahlt wurde, diese habe ich per DESC LIMIT auf 10 Einträge gesetzt. Nun ist ja eigentlich alles was über 10 Einträge ist Datenmüll und diesen möchte ich gerne entfernen. Gibt es eine Möglichkeit das sobald bei jemanden mehr wie 10 Einträge in der Statistik sind die älteste Auszahlung gelöscht wird?
Benutzt wird das LKT-Auszahlungsaddon. Wenn jemand Ideen hat wie man es verwirklichen könnte würde ich mich sehr freuen.
Lieben Gruß.
Frag mal bei LKT nach vielleicht weis er da was, und kann es ins Addon intigrieren ;)
Mfg Rene_1992 - René Röbel
hankfromhelvete
18.04.2011, 16:52
Das einfachste wird wohl sein, alle Auszahlungen die älter als x sind zu löschen. Ich kenn zwar zwar nicht die Struktur des Addons, aber wenn der Timestamp in der DB gespeichert wird, sollte das kein Problem sein.
Sent from my LT15i using Tapatalk
ich glaube da hast du dir ganz schön was vorgenommen;
also zuerstmal brauchst du ja eine id als primary_key, damit du jeden eintrag einzelnd anwählen kannst
-> standart 0 (null als zahl)
dann brauchst du m.e. eine 2. tabelle, in der du einfach speicherst, welcher eintrag als letztes überschrieben wurde.
dann kannst du mit count() die anzahl der einträge eines user herausfinden
wenn diese gleich 80 ist, wird kein neuer datensatz angelegt, sondern derjenige mit der ID+1 (aus der hilfstabelle) wird überschrieben
einziges problem bei der sache:
herausfinden, welche id als letztes überschrieben wurde und welche id als nächstes folgt
da muss man vll nochmal überlegen, bin ich aber im mom zu fertich für (grade informatik arbeit hinter mir und totall müde ^^)
hoffe das konnte dir erstmal helfen
mfg
EDIT:
is mir grade als idee gekommen:
du kannst ja ne einfache abfrage machen (welche id als nächstes kommt)
SELECT ID
FROM anzahl
WHERE user = "username"
AND ID > (SELECT ID FROM next_id WHERE user = "username")
ORDER BY ID ASC
LIMIT 1;
so in etwa, musst du halt anpassen ^^
ev. geht dieser query:
allerdings habe ich keine ahnung / Zeit zu googeln ob Group by in delete Statements erlaubt sind
Fürs auszahlen Pro
DELETE FROM vms_lkt_auszahlanforderungen Group by uid ORDER BY id DESC LIMIT 10, 100000
Für euroauszahlung
DELETE FROM vms_lkt_euroauszahlunganforderung Group by uid ORDER BY id DESC LIMIT 10, 100000
Bitte unbedingt zuerst ein Backup machen vor dem ausfüren zum test in der DB
Hey,
habe nun eine lösung:
$abc = "select * from vms_LKT_auszahlanforderungen order by uid asc";
$erc = mysql_query($abc);
while($row = mysql_fetch_object($erc))
{
if($aktuelle_uid!=$row->uid)
{
$aktuelle_uid=$row->uid;
$anzahl=0;
}
$anzahl++;
if($anzahl>10)
{
mysql_query("delete from vms_LKT_auszahlanforderungen where id=$row->id");
}
}
Das lasse ich nun mit dem Db_Optimize-Cron laufen.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.