ʫ

Sie haben den Artikel erfolgreich in den Warenkorb gelegt.
Was möchten Sie als nächstes tun?

Weiter einkaufen Zur Kasse

Sortieren mit MySQL ORDER BY

MySQL stellt die unterschiedlichsten Möglichkeiten Datensätze innerhalb Datensatzsammlungen abzufragen. Auch wenn Sie die Datensätze nach dem Auslesen beliebig manipulieren können, beispielsweise mit diversen PHP Funktionen, so ist es ratsam sämtliche Operationen direkt in der MySQL Abfrage zu erledigen, bevor Sie die Daten auslesen. Dies beinhaltet die richtige Reihenfolge von selektierten MySQL Felder, richtige Tabellen, eventuelle Filtrierungen mit WHERE und natürlich die Sortierung der Daten.

Nachfolgend werden wir betrachten wir MySQL Daten mit der Klausel ORDER BY sortiert werden. Es ist immer besser und wesentlich schneller Ihre Daten mit MySQL zu sortieren, statt mit einer anschließenden Programmierung.

Sortieren mit MySQL - ORDER BY

Wenn Sie Daten sortieren wollen, so sollten Sie innerhalb Ihrer MySQL Abfrage vorgehen:

SELECT `ID`, `Name` FROM `Tabelle` ORDER BY `Name`

Im obigen Beispiel wird nach Name alphabetisch sortiert.
Sie können auch die Reihenfolge der Sortierung angeben - ob aufsteigend oder absteigend. Falls Sie das nicht angeben, so sortiert MySQL automatisch aufsteigend:

SELECT `ID`, `Name` FROM `Tabelle` ORDER BY `Name` ASC

Obige MySQL Abfrage ist gleich der ersten, die wir gezeigt haben - alle Datensätze werden aufsteigend sortiert.


SELECT `ID`, `Name` FROM `Tabelle` ORDER BY `Name` DESC

Nun werden die Daten alphabetisch absteigend sortiert, so dass Z als erstes vorkommt und a am Ende.

Sortierung innerhalb Unterabfragen (Subqueries) - Beispiel günstigster Preis

Sie haben die Möglichkeit auch in Unterabfragen zu sortieren. Dies ist insbesondere interessant, wenn Sie an einen bestimmten Wert kommen wollen, der aus einer Sortierung ganz vorne oder ganz hinten steht. Unser Beispiel holt uns den günstigsten Preis für unser Produkt:

 SELECT `ID`, `Name`, (SELECT `Preis` FROM `Preistabelle` p WHERE p.ID=Tabelle.ID ORDER BY `Preis` ASC LIMIT 0,1) as `GuenstigsterPreis` FROM `Tabelle` ORDER BY `Name`

Was passiert oben? Wir selektieren ID, Name eines Produktes und dann holen wir uns für dieses Produkt in einer Unterabfrage von allen verfügbaren Preisen den ersten - und limitieren direkt zu einem zurückgegebenen Wert, was sowieso für eine Unterabfrage notwendig ist. Somit, falls das Produkt zehn verschiedene Preise hat, so selektieren wir mit ORDER BY den günstigsten Preis und holen nur ihn zur Oberabfrage. Bei solchen MySQL Fällen ist ORDER BY einfach unerlässlich. Sie können auch mit ORDER BY `Preis` DESC den höchsten Preis berechnen.

û