WebImpressionen
Order by

Sortieren mit ORDER BY

Die ORDER BY-Klausel kann in Verbindung mit der SELECT-Anweisung verwendet werden,
um Daten aus einer Tabelle anzuzeigen, die nach einem bestimmten Feld sortiert sind.

Mit der ORDER BY-Klausel können die zu sortierenden Feldnamen und die Sortierrichtung entweder aufsteigend oder absteigend definiert werden.

Die grundlegende Syntax der ORDER BY-Klausel kann wie folgt angegeben werden:

SELECT spalten_name(n) FROM tabellen_name ORDER BY spalten_name(n) ASC|DESC

Erstellen einer SQL-Abfrage mit der ORDER BY-Klausel in der SELECT-Anweisung.
Abfrage ausführen, indem sie an die php-Funktion "mysqli-query" übergeben wird, um die sortierten Daten abzurufen.

Betrachten wir folgende Tabelle "personen" in der Demo-Datenbank:

    0    spalte1   spalte2         spalte3
 +----+---------+---------+--------------------+
 | id | vor_name| name    | mail               |
 +----+---------+---------+--------------------+
 |  1 | Peter   | Maier   | petermaier@mail.de |
 |  2 | Udo     | Schmidt | udoschmidt@mail.de |
 |  3 | Frank   | Meier   | frankmeier@mail.de |
 |  4 | Peter   | Mayer   | petermayer@mail.de |
 |  5 | Hans    | Schmid  | hansschmid@mail.de |
 +----+---------+---------+--------------------+

Der php-Code im folgenden Beispiel wählt alle Zeilen aus der Tabelle "personen" aus und sortiert das Ergebnis nach der Spalte "vor_name" in alphabetisch aufsteigender Reihenfolge.

 
<?php
// Verbindung zur Datenbank einfügen
1
$sql = " SELECT * FROM personen ORDER BY vor_name ";
2
if ( $result = mysqli_query ( $link, $sql )) {
3
if ( mysqli_num_rows ( $result ) > 0 ) {
4
echo "<table>";
5
echo "<tr>";
6
echo "<th>Id</th>";
7
echo "<th>Vorname</th>";
8
echo "<th>Name</th>";
9
echo "<th>eMail</th>";
10
echo "</tr>";
11
while ( $row = mysqli_fetch_array ( $result )) {
12
echo "<tr>";
13
echo "<td>" . $row [ 'id' ] . "</td>";
14
echo "<td>" . $row [ 'vor_name' ] . "</td>";
15
echo "<td>" . $row [ 'name' ] . "</td>";
16
echo "<td>" . $row [ 'mail' ] . "</td>";
17
echo "</tr>";
18
}
19
echo "</table>";
20
mysqli_free_result ( $result );
21
} else {
22
echo " Es wurden keine Datensätze gefunden. ";
23
}
24
} else {
25
echo " FEHLER: " . $sql . " konnte nicht ausgeführt werden. " . mysqli_error ( $link );
26
}
27
mysqli_close ( $link ) ;
 
?>
 
<?php
// Verbindung zur Datenbank einfügen
1
$sql = " SELECT * FROM personen ORDER BY vor_name ";
2
if ( $result = mysqli -> query ( $sql )) {
3
if ( $result -> num_rows > 0 ) {
4
echo "<table>";
5
echo "<tr>";
6
echo "<th>Id</th>";
7
echo "<th>Vorname</th>";
8
echo "<th>Name</th>";
9
echo "<th>eMail</th>";
10
echo "</tr>";
11
while ( $row = $result -> fetch_array () ) {
12
echo "<tr>";
13
echo "<td>" . $row [ 'id' ] . "</td>";
14
echo "<td>" . $row [ 'vor_name' ] . "</td>";
15
echo "<td>" . $row [ 'name' ] . "</td>";
16
echo "<td>" . $row [ 'mail' ] . "</td>";
17
echo "</tr>";
18
}
19
echo "</table>";
20
$result -> free ();
21
} else {
22
echo " Es wurden keine Datensätze gefunden. ";
23
}
24
} else {
25
echo " FEHLER: " . $sql . " konnte nicht ausgeführt werden. " . $mysqli -> error ;
26
}
27
$mysqli -> close () ;
 
?>

Nach dem Sortieren sieht die Ausgabe etwa so aus:

IDVornameNameeMail
3FrankMeierfrankmeier@mail.de
5HansSchmidhansschmid@mail.de
1PeterMaierpetermaier@mail.de
4PeterMayerpetermayer@mail.de
2UdoSchmidtudoschmidt@mail.de