Sie sind hier: Startseite -> MySQLi-Grundlagen -> select - order by

MySQLi-Abfrage mit order by als Sortierung

Ergebnisse wie gewünscht sortieren

Mit select können wir Abfragen in der MySQLi-Datentabelle durchführen und bereits besprochen ist auch die Filtertechnik durch Abfrageergänzungen, die mit der where-Option machbar sind. Oftmals hat man aber ein weiteres Problem oder einen Wunsch, nämlich eine Sortierung des Ergebnisses. Was nutzt die Statistik der Seitenaufrufe, die man sich aufgebaut hat, wenn man nicht nach den Seiten mit den meisten Aufrufen sortieren kann.

Mit order by die Sortierung zur select-Abfrage hinzufügen

Wenn man keine Sortierung wählt, wird automatisiert in einer bestimmten Richtung, meist aufsteigend jeder Datensatz ausgegeben, der dem Suchkriterium entspricht. Will man das ändern oder nach einem bestimmten Feld sortieren lassen, braucht es eine Änderung der Abfrage.

Hier bietet sich die Lösung durch den Zusatz order by an.

select * from adressen order by ort asc
select * from adressen order by ort desc

Im ersten Fall wurden wieder alle Datenfelder (*-Parameter) aller Datensätze (kein Filter gewählt) herausgesucht, aber mit dem Zusatz "order by" bestimmt, dass das Datenfeld ort als Kriterium für die Sortierung herangezogen werden soll und zwar aufsteigend. ASC steht für ascend und bedeutet aufsteigend, also von 0 bis zum höchsten Wert oder von A bis Z, das Gegenteil zeigt das zweite Beispiel.

DESC steht für descend und bedeutet absteigend. Hier zeigt sich zuerst der höchste Wert und es wird bis 0 sortiert oder von Z bis A, je nach Art des Inhaltes.

Will man also, um das Beispiel nochmals aufzugreifen, eine Statistik nach Zugriffe haben, dann wird man desc als Option wählen, um die stärksten Werte am Beginn der Liste zu finden. Eine alphabetische Reihung von Familiennamen wird man eher aufsteigend sortieren wollen. Natürlich kann man die Sortierung auch mit Filter kombinieren.

select * from adressen where nachname like 'M%' order by nachname asc

In diesem Fall werden alle Adressen herausgesucht, bei denen der Nachname mit dem Buchstaben M beginnt und danach wird nach dem Nachnamen sortiert und zwar aufsteigend. Man kann das Ganze aber noch steigern, denn was ist, wenn man 20 Maiers in der Datenbank hat. Dann kommt der Anton und dann der Stefan und schließlich die Maria. Das ist auch nicht in Ordnung.

select * from adressen where nachname like 'M%' order by nachname asc, vorname, asc

In diesem Fall wird die gleiche Abfrage wie zuvor durchgeführt, aber beim Zusatz order by werden zwei Felder angeführt und zwar zuerst der Nachname und dann der Vorname. Bei sollen aufsteigend sortiert werden. Was hier passiert ist Folgendes: zuerst werden alle Namen mit M am Beginn herausgesucht. Die werden dann nach Familienname aufsteigend sortiert und dann wird zusätzlich nach Vorname sortiert und damit ist der Anton vor der Maria und dem Stefan - um beim Beispiel zu bleiben.

Buchtipp: PHP und MySQL für Einsteiger (Thalia)*
* = Affiliate-Link; bei Kauf unterstützen Sie diese Plattform

Lesen Sie auch

MySQLi basiert auf SQL und daher gibt es gar nicht so viele Befehle wie etwa in einer richtigen Programmiersprache, aber es gibt zu den Befehlen viele Zusätze, speziell bei der Abfrage mit select. Es gibt aber auch Befehle, die man kaum braucht und dazu gehört create zum Anlegen von Datenbanken und Datentabellen oder drop zum Löschen selbiger. Auch alter als Befehl zum Ändern wird selten benötigt.

Dann gibt es Anordnungen, die man sehr oft oder gelegentlich braucht, ganz nach Situation. Mit delete kann man Datensätze löschen und das ist in einem Skript immer wieder der Fall, etwa alte Statistikdaten. Und mit insert kann man neue Datensätze anlegen, zum Beispiel nach dem Eintragen im Geästebuch.

Der große Akteur auf Ebene der MySQLi-Datenbank auch von PHP aus ist der Befehl select. Er dient dazu, die vorhandenen Daten zu untersuchen und es gibt eine ganze Reihe an Möglichkeiten, wie dies erfolgen kann. Mit Filter, mit Begrenzungen oder auch mit verknüpften Kriterien, um die richtigen Datensätze zu finden. Selbst rechnen ist damit möglich.

Weitere Befehle gibt es mit Drop und Truncate, wobei Drop eine Tabelle komplett löschen kann oder auch Datenfelder aus einer Tabelle. Truncate leert die Tabelle, löscht also alle Datensätze. Diese Befehle nutzt man aber nicht in Skripte von außerhalb, sondern setzt sie direkt in phpMyAdmin bei der Verwaltung ein.

Themenseiten

Diesen Artikel teilen

Infos zum Artikel

Select-Abfrage mit SortierungArtikel-Thema: MySQLi-Abfrage mit order by als Sortierung
Beschreibung: Mit 📀 order by kann man bei einer select-Abfrage in MySQLi eine ✅ bestimmte Sortierung erreichen und das Ergebnis beeinflussen.

Kategorien

Grundlagen
HTML-Grundlagen
CSS-Grundlagen
Javascript-Grundlagen
PHP-Grundlagen
MySQL-Grundlagen
SEO-Grundlagen

Infos, Tipps, Vermarktung
Webdesign-Lexikon
Online-Werbung
PHP-Codeschnipsel
Praxisartikel