Die letzen 3 Einträge auslesen
Stephan
- php
0 Lude0 Thomas Luethi0 Thomas Luethi0 Stephan0 Thomas Luethi
0 Stephan
Hallo,
kann mir jemand sagen, wie der SQL befehl lautet, um die letzten 3 anzuzeigen?
Bis jetzt fand ich im Archiv nur LIMIT 1,X damit kann man aber nur die ersten anzeigen lassen...
Danke schonmal
Stephan
PS: Ich habe die Datensätze nummeriert, falls es hilft...
Hi,
kann mir jemand sagen, wie der SQL befehl lautet, um die letzten 3 anzuzeigen?
Bis jetzt fand ich im Archiv nur LIMIT 1,X damit kann man aber nur die ersten anzeigen lassen...
stand es nicht schon in der Bibel, dass bei entsprechender Sortierung die Letzten die Ersten sein koennen?
Gruss,
Lude
Hallo,
wenn ich nun aber LIMIT 1,X ausführen lasse, holt er mir ja die ersten 3 aus der Datenbank. Dann kann ich die natürlich sortieren, ich will aber die letzten 3 (wirklich nur die) auslesen und anzeigen, das Projekt ist größer und es würde länger dauern, alles auszulesen...
Danke schon jetzt
Stephan
ich verstehe die bibel auch immer nicht, aber man muss sie wohl sinnbildlich interpretieren, nicht mit den ersten anfagen, sondern mit den letzten drei...
Ilja
Hallo,
ich habe es jetzt glaub ich:
LIMIT 3 DESC
Oder?
Danke schonmal
Stephan
Hallo,
LIMIT 3 DESC
Oder?
Nein. Erst absteigend nach Nummerierung sortieren, dann LIMIT.Z.B.:
ORDER BY id DESC LIMIT 3
Gruß, Jan
Ah, OK, danke!
Hallo Stephan,
ich habe es jetzt glaub ich:
LIMIT 3 DESC
Oder?
Sicherlich nicht! Das DESC gehört zur ORDER BY-Klausel.
Die letzten 3 Einträge auszulesen ist doch nur sinnvoll, wenn du die Einträge auch irgendwonach sortierst. Jetzt änderst du einfach die Sortierungsreihenfolge, indem du
ORDER BY ... ASC bzw.
ORDER BY ...
durch
ORDER BY ... DESC
ersetzt, bzw. umgekehrt.
Lies auch noch mal http://www.mysql.com/doc/en/SELECT.html
Schöne Grüße,
Johannes
OK, Danke, has gerafft ;-)
Stephan
lass dich nicht verwirren. es gibt verschiedene wege, dein problem zu lösen welches du nimmst, hängt ein wenig von deinen vorgaben ab. grunsätzlich sind zwei dinge im spiel, group by und limit.
group by sortiert die einzelnen datensätze (zeilen) der ergebnistabelle. dabei kannst du eine oder mehrere spalten angeben, die für die sortierung rangezogen werden und bestimmen, ob sie aufwärts (ASC standard) oder abwärts (DESC) sortiert werden, zum beispiel:
SELECT vorname, nachname FROM mitglieder ORDER BY nachname ASC, wobei ASC standard ist, also weggelassen werden kann.
mit LIMIT kannst du die anzahl der datensätze bestimmen, die ausgeben werden sollen und falls gewünscht, ab welchen datensatz er anfagen auszugeben. Der Limit Befehl hat also ein oder zwei Argumente, Beispiel:
SELECT vorname, nachname FROM mitglieder ORDER BY nachname ASC LIMIT 5,3, wobei er hier bei den sechsten datensatz anfängt (0 ist der erste wenn ich mich nicht täuscbe) und insgesamt drei datensätze ausgibt.
dieses beide konstrukte kannst du nun nehmen, indem du die sortierung der tabelle einfach umdrehst, also ORDER BY nachname DESC und dann mit LIMIT 3 oder LIMIT 0,3 die ersten drei, die eigentlich die letzten sind, ausgibst.Beispiel:
SELECT vorname, nachname FROM mitglieder ORDER BY nachname DESC LIMIT 3 oder mit LIMIT 0,3
Ilja
Ah, Danke! Jetzt habe ich es verstanden...!
Stephan
Hallo Ilja,
lass dich nicht verwirren. es gibt verschiedene wege, dein problem zu lösen welches du nimmst, hängt ein wenig von deinen vorgaben ab. grunsätzlich sind zwei dinge im spiel, group by und limit.
group by sortiert die einzelnen datensätze (zeilen) der ergebnistabelle.
Ich hoffe, dass du dich da nur verschrieben hast... ;-)
Grüße,
Johannes
rofl yo,
group by sortiert die einzelnen datensätze (zeilen) der ergebnistabelle.
Ich hoffe, dass du dich da nur verschrieben hast... ;-)
well der wald und die bäume, ORDERB BY ;-)
Ilja
Hallo,
kann mir jemand sagen, wie der SQL befehl lautet, um die letzten 3 anzuzeigen?
Bis jetzt fand ich im Archiv nur LIMIT 1,X damit kann man aber nur die ersten anzeigen lassen...
Ein Grund mehr, das englische Manual zu lesen:
http://www.mysql.com/doc/en/SELECT.html
To retrieve all rows from a certain offset up to the
end of the result set, you can use some big number
for the second parameter:
SELECT * FROM table LIMIT 95,18446744073709551615; # Retrieve rows 96-last.
Noch vor kurzem stand dort IIRC:
SELECT * FROM table LIMIT 95,-1; # Retrieve rows 96-last.
So steht's noch heute auf:
http://www.webmaster2020.com/sql/select.html
Ich weiss nicht, ob diese Syntax weiterhin gueltig ist,
oder ob MySQL sie irgendwann rauswirft.
HTH, Gruesse,
Thomas
Hallo,
SELECT * FROM table LIMIT 95,-1; # Retrieve rows 96-last.
Oops, sorry, das war etwas vorschnell.
Nuetzt Dir nur was, wenn Du schon weisst, wieviele Resultate es gibt.
Also zu umstaendlich fuer Dein Vorhaben.
Die richtige Loesung hat Lude schon angedeutet:
Die "letzten 3" nach einer bestimmten Sortierung
sind die "ersten 3" nach der umgekehrten Sortierung.
Aendere also ASC zu DESC oder umgekehrt, und verwende LIMIT 3.
So einfach ist das ;-)
Gruesse,
Thomas
Hallo,
also so:
LIMIT 3 DESC
oder?
Stephan
Hallo,
LIMIT 3 DESC
Nein. Nicht ganz.
Lerne SQL, insbesondere, wie eine SELECT-Query
in MySQL aufgebaut sein muss.
Das DESC gehoert in die ORDER BY Klausel.
Die Reihenfolge spielt auch eine gewisse Rolle.
SELECT * FROM Tabelle
ORDER BY xyz DESC
LIMIT 3
Den Link zum englischen Manual hatte ich Dir schon gegeben.
Hier noch die deutsche Version:
http://www.mysql.com/doc/en/SELECT.html
Gruesse,
Thomas
Jetzt gehts, Danke!
Stephan
Ja doch für jemanden wie mich und für Schweizer mag das ja genauso sein wie deutsch.
Aber für den normal sterblichen Deutschen ist das wohl in englisch :-)
http://www.mysql.com/doc/de/SELECT.html
Hier das wahre deutsche Manual, was nicht nur die Schweizer als "Deutsch" bezeichnen würden.
TomIRL
hi,
SELECT * FROM Tabelle
ORDER BY xyz DESC
LIMIT 3
ein beispiel von _dir_, mit SELECT * ...?
*tststs*
na schön, als "war ja nur ein beispiel um ORDER BY zu erkären" lassen wir das noch mal durchgehen ;-)
gruss,
wahsaga
Hallo,
ein beispiel von _dir_, mit SELECT * ...?
*tststs*
;-)
<ausrede style="faul">
Ich hatte es doch direkt aus dem Manual mit Copy-Paste uebernommen.
</ausrede>
http://www.dclp-faq.de/q/q-sql-select.html
"Im MySQL-Manual wird in den Beispielen der Einfachheit halber
fast immer SELECT * verwendet."
u.s.w. - bitte dort nachlesen ;-)
Gruesse,
Thomas
P.S. Danke an wahsaga fuer die /de/ und /en/ Sache ;-)
Hallo,
also müsste es bei mir so lauten, oder?
SELECT * FROM news LIMIT 2,-1;
Dann sollte er die letzten 3 Anzeigen, oder?
Stephan