• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Dauerhafte Sortierung SQL

jfreakr

Neues Mitglied
Hallo zusammen,

ich habe ein Script, dass die letzten 10 Einträge abrufen kann, was aber benötigt, dass die Einträge absteigend sortiert sind. Nun kann ich in SQL zwar manuell die Einträge einmalig sortieren lassen, ich möchte aber gerne, dass die Daten gleich beim Einschreiben in die Datenbank nach id sortiert werden.

Wie kann ich das machen?

Ein freundlicher Gruß von
jfreakr
 
die ganze tabelle auslesen (array), den neuen datensatz hinzufügen (ins array), dann sortieren (das array) und die ganze tabelle auf einen satz neu schreiben lassen.

das ist aber wenig performant, deine datenbank sortiert so schnell, dass du beim schreiben wahrscheinlich mehr zeit brauchen wirst, als wenn du die tabelle 100 sortieren lässt.

ps.
wenn die tabelle einen ordentlichen aufbau hat, ist sie immer absteigend sortiert. z.b. eine id 1000.000.000 immer um eines verringern oder was weiss ich.
 
Hmm

Also, so ganz hab ich das nicht kapiert.

Also meine Datenbank stellt die ID immer hinten an. Die ID wird immer um eins größer. Es muss doch möglich sein, dass die Tabelle sich selbst abwärts sortiert. D.h. dass am Anfang der Tabelle die größte ID ist. Oder geht das nicht?

Gruß
jfreakr
 
Klar:

Code:
ALTER  TABLE  `tabellenname`  ORDER  BY  `id`

Allerdings sehe ich darin keinen Sinn ;ugl
 
Also das habe ich schon gemacht, klappt aber nicht. Neue Datensätze werden immernoch am Ende der Tabelle eingetragen, anstatt vorne.

Der Sinn besteht darin, dass mein Script die ersten 10 Datensätze abfrägt, als Neuzugänge. Ein neuer Datensatz wird aber immer am Ende der Tabelle hinzugefügt. Das soll sich ändern.
 
in MySQL

Code:
SELECT * FROM tabelle ORDER BY id DESC LIMIT 0,10

damit bekommst du immer die letzten 10 beginnend mit dem letzten und das schnell schnell genug, die andere form spricht gegen das normale verhalten einer datenbank
 
Der Sinn besteht darin, dass mein Script die ersten 10 Datensätze abfrägt, als Neuzugänge. Ein neuer Datensatz wird aber immer am Ende der Tabelle hinzugefügt. Das soll sich ändern.

Dann sortiere nach dem Eintragsdatum und nicht nach einer ID. Eine ID kann durchaus auch neu vergeben werden, wenn sie vorher schonmal existierte und gelöscht wurde.
 
@ Slibbo


Hab den Befehl eingegeben und er hat es kurz sortiert. Als ich im phpMyAdmin aber weider auf "Anzeigen" gegangen bin, war die Sortierung schon wieder weg.
 
Nochmal: du musst die IDs nicht sortieren wenn Du im abfragenden Statement "ORDER BY id" verwendest. Dann ist es völlig egal wie in der Datenbank die Ids geordnet sind. Für die Änderung, dass Du nach Eintragsdatum sortierst sind keine PHP-Kenntnisse erforderlich - höchstens Datenbankkenntnisse.
 
ja, jfreakr. das ist so auch beabsichtigt.

wenn du neue einträge an den anfang einer tabelle haben wolltest müssten die anderen einträge alle einen weiter nach hinten geschoben werden im speicher und damit würde der aufwandt neue einträge in die datenbank zu schreiben immer weiter steigen was deine homepage dann immer langsamer machen würde.

also hör doch bitte einfach auf uns, danke ^^
 
Hab ich doch

Hallo zusammen,

ich hab grad mal nachgeschaut und im Script steht das "order by id" drin.

Dann hab ich id mit `id` ersetzt und jetzt klappts.

Seltsam, bei meinem anderen Hoster hats so funktioniert.

Aber schön, dass es noch geklappt hat und vielen Dank für eure Mühe und eure Erklärungen.

Gruß
jfreakr
 
Zurück
Oben