PHP / MYSQL max. entries
-
RandomAccess85 schrieb:
Hallo,
ich seh grad, dass das so auch nicht funktionieren wird. Die AS-Klausel lässt sich nur auf ORDER BY oder GROUP BY anwenden. Dann wirst du wohl doch das Workaround machen müssen.
$res = mysql_query("SELECT * FROM tabelle"); $count = $mysql_num_rows($res)-10; $iRes = mysql_query("SELECT * FROM tabelle ORDER BY irgendwas ASC LIMIT 0, $count"); //usw.... //mysql_free_result($res); nicht vergessenLG
hö?
LIMIT 0,10 ORDER BY datum DESCdas sollte doch reichen um die letzten 10 zu bekommen

du kannst dann ein delete mit jagen mit "WHERE NOT IN ( SELECT .. FROM .. LIMIT )
DELETE FROM table WHERE id NOT IN ( SELECT id FROM table ORDER BY datum DESC LIMIT 0,10)müsste doch gehen oder??

EDIT:: delete natürlich nur senden wenn rowcount > 10 ^^
-
Hallo,
das ist jetzt die Frage

Entweder
kunoiwo schrieb:
bis auf die letzten 10
auslesen oder
kunoiwo schrieb:
bis auf die ersten 10
auslesen (wiedergeben)
//Edit: Sorry hast natürlich Recht. Dein Vorschlag müsste funktionieren.
VlG
-
Er will doch immer 10 einträge ausgeben haben.
Und wenn er merkt das es 11 einträge sind will er den 1 löschen damit es wieder 10 sind.Also nach der schnellen lösung von mir wäre es dann so:
1. Hole einträge aus datenbank
2. Prüfe RowCount:Wenn RowCount > 10 dann lösche alle aus der datenbank die nicht in die selektierung (hole mir die jüngsten 10 einträge) fallen und hole mir erneut die einträge aus der datenbank.
Wenn RowCount <= 10 Alles ok

Oder nischt ^^
Edit// Ok dein edit grad gesehen

-
Problem:
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
MySQL Version: 5.1.37

-
oh

naja dann packt man es entweder in ein VIEW oder man macht ein JOIN (SELECT ...)
-
Erstmal danke für die hilfreichen Antworten.
Hab mein Glück mal probiert:$all_entries = "SELECT * FROM MyBook_log"; $result = mysql_query($all_entries); if (mysql_num_rows($result)>10) { $sql = "DELETE FROM MyBook_log WHERE ID NOT IN ( SELECT ID FROM MyBook_log ORDER BY ID DESC LIMIT 0,10)"; $result2 = mysql_query($sql); echo "Entries: ".mysql_num_rows($result).""; } else { echo "Unter 10, alles ok";}Das passiert nichts. Kommt auch keine Fehlermeldung. Irgendwie löscht er da nichts. Was mach ich falsch?
-
Hallo,
mysql_error();gucken ob wirklich kein Fehler produziert wird.
VlG
-
RandomAccess85 schrieb:
Hallo,
mysql_error();gucken ob wirklich kein Fehler produziert wird.
VlG
Ahhhh
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Wurde glaube ich auch schon angesprochen.
Ehm wie ist dazu denn die Alternative:VIEW oder man macht ein JOIN (SELECT ...)
Ist mir beides nciht vertraut...
-
Hallo,
wenn du jetzt schon den COUNT hast würde sich ersterer Vorschlag anbieten. Damit umgehst du VIEW's und JOIN's komplett.
$all_entries = "SELECT * FROM MyBook_log"; $result = mysql_query($all_entries); $count = mysql_num_rows($result); if ($count>10) { $count-=10; $sql = "DELETE FROM MyBook_log ORDER BY ID ASC LIMIT ".$count.")"; $result2 = mysql_query($sql); }Löscht alle Datensätze, bis auf die letzten 10!
LG
-
Joa viele wege führen nach Rom

Deiner natürlich auch
Hehe wollte grad was anmerken an deinem post, aber is schon geändert :D!
@TP - mal bei zeit anschauen oder selbst googeln:
http://dev.mysql.com/doc/refman/5.1/de/join.html
http://dev.mysql.com/doc/refman/5.1/de/create-view.html
-
RandomAccess85 schrieb:
Hallo,
wenn du jetzt schon den COUNT hast würde sich ersterer Vorschlag anbieten. Damit umgehst du VIEW's und JOIN's komplett.
$all_entries = "SELECT * FROM MyBook_log"; $result = mysql_query($all_entries); $count = mysql_num_rows($result); if ($count>10) { $count-=10; $sql = "DELETE FROM MyBook_log ORDER BY ID ASC LIMIT ".$count.")"; $result2 = mysql_query($sql); }Löscht alle Datensätze, bis auf die letzten 10!
LG
War zwar ein kleiner Syntaxfehler drinne aber hat mir richtig gut geholfen:
$sql = "DELETE FROM MyBook_log ORDER BY ID ASC LIMIT $count";Danke euch beiden!
Wenn ihr mal in der Nähe von Kiel seid, dürft ihr euch nen Bier abholen.
-
haha alles klar

Die klammer is ihm wohl so reingerutscht

btw bin auch eher ein freund von ' -- ' . $var . ' -- '
Wird etwas schneller berechnet als " -- $var " oder wie im bsp. " -- " . $var . " -- "greez
-
Hallo,
asoooo die Klammer. Ich hab mich die ganze Zeit gewundert von welchem Syntaxfehler die Rede ist

Ja die Klammer gehört da natürlich nicht hin.//spätestens bei so lustigen Dingen wie mysql_query("SELECT * FROM tabelle WHERE feld='".$row['vorhergeholterWert']."'"); // ist "--".$var."--" nicht mehr so einfach zu vermeiden. // Aber egal, wir schweifen ab ^^VlG
P.S. Ein Bier bitte nach Leipzig. DHL Luftpost bitte, dann ist es zum Feierabend da
