Absteigende SQL-Reihenfolge. Arbeiten mit der Datenbank. Sortieren von Daten als Ergebnis einer SQL-Abfrage. Was ist Sortieren in einer Datenbank?

Notiz:
Alle Artikel in der aktuellen SQL-Tutorial-Kategorie verwenden Beispiele und Probleme, die auf einer Trainingsdatenbank basieren.

Gemäß der ersten Normalform relationaler Datenbanken sollte die Reihenfolge der Zeilen in Tabellen keine Rolle spielen. In der Praxis ist es jedoch häufig erforderlich, Informationen zu sortieren, bevor sie auf dem Bildschirm angezeigt werden.

Die ORDER BY-Klausel ist für die Reihenfolge der in die SQL-Abfrage geladenen Zeilen verantwortlich. Es befindet sich ganz am Ende der Anfrage:

WÄHLEN<Перечень столбцов>AUS<Перечень таблиц>BESTELLEN NACH<Условие сортировки>

Die Sortierbedingung gibt die Spalten an, nach denen die resultierenden Tabellenzeilen sortiert werden:

Sortieren nach Spalte 1, Spalte 2

Sortierreihenfolge in SQL

Es gibt 2 Sortiermöglichkeiten: aufsteigend und absteigend. Um den Sortiertyp in der Abfrage anzugeben, geben Sie nach dem Spaltennamen das Schlüsselwort ASC (aufsteigend) oder DESC (absteigend) an, das die aufsteigende bzw. absteigende Reihenfolge bestimmt. Der Standardtyp ist ASC:

ORDER BY col1 – die nächste Klausel entspricht ORDER BY col1 ACS

Es ist auch möglich, für verschiedene Spalten eine andere Reihenfolge festzulegen:

ORDER BY col1 DESC, col2 ASC

Um das Material zu festigen, lösen Sie das Problem in der Bildungsdatenbank:

Sie benötigen eine Liste der Mitarbeiter-IDs, sortiert nach Gruppe in aufsteigender Reihenfolge und Einstellungsdatum „vom neuesten zum ältesten“.

SELECT id, Group, Hire_date FROM Employees ORDER BY Group, Hire_date DESC

Ergänzen wir die Syntax der SELECT-Anweisung durch die ORDER BY-Klausel (der vertikale Balken bedeutet, dass eine der Optionen ausgewählt werden muss):

SELECT [TableName.]ColumnName[, [TableName.]ColumnName2 ...] FROM [[DatabaseName.]SchemaName.]TableName ColumnName [, [TableName.]ColumnName2 ...]]

  • Weiterleiten >

Wenn Ihnen die Materialien von office-menu.ru geholfen haben, unterstützen Sie bitte das Projekt, damit ich es weiterentwickeln kann.

Beim Abrufen von Daten kann es wichtig sein, diese in einer bestimmten geordneten Form zu erhalten. Die Sortierung kann nach beliebigen Feldern mit beliebigem Datentyp erfolgen. Bei numerischen Feldern kann dies eine aufsteigende oder absteigende Sortierung sein. Bei Zeichenfeldern (Textfeldern) kann die Sortierung in alphabetischer Reihenfolge erfolgen, im Wesentlichen erfolgt die Sortierung jedoch auch in aufsteigender oder absteigender Reihenfolge. Es kann auch in jede Richtung durchgeführt werden – von A nach Z und umgekehrt von Z nach A.

Der Kern des Sortiervorgangs besteht darin, die Reihenfolge auf eine bestimmte Reihenfolge zu reduzieren. Weitere Informationen zum Sortieren finden Sie im Artikel „Sortieralgorithmen“. Beispielsweise das Sortieren einer beliebigen Zahlenfolge in aufsteigender Reihenfolge:

2, 4, 1, 5, 9

sollte eine geordnete Reihenfolge ergeben:

1, 2, 4, 5, 6

Ebenso gilt beim Sortieren in aufsteigender Reihenfolge der Zeichenfolgenwerte:

Ivanov Ivan, Petrov Petr, Ivanov Andrey

Das Ergebnis sollte sein:

Ivanov Andrey, Ivanov Ivan, Petrov Petrov

Hier ist die Zeile „Andrey Ivanov“ an den Anfang gerückt, da der Vergleich der Zeichenfolgen Zeichen für Zeichen erfolgt. Beide Zeilen beginnen mit den gleichen Zeichen „Ivanov“. Da das Symbol „A“ im Wort „Andrey“ im Alphabet früher steht als das Symbol „I“ im Wort „Ivan“, wird diese Zeile früher platziert.

Sortieren in einer SQL-Abfrage

Um eine Sortierung durchzuführen, müssen Sie den Befehl ORDER BY zur Abfragezeichenfolge hinzufügen. Nach diesem Befehl wird das Feld angezeigt, nach dem sortiert wird.

Als Beispiele verwenden wir die Waren Tischwaren:

Num
(Produktnummer)
Titel
(Name)
Preis
(Preis)
1 Mandarin50
2 Wassermelone120
3 Ananas80
4 Banane40

Die Daten hier sind bereits nach der Spalte „num“ geordnet. Erstellen wir nun eine Abfrage, die eine Tabelle mit in alphabetischer Reihenfolge sortierten Produkten anzeigt:

WÄHLEN * AUS WARENBESTELLUNG NACH Titel

SELECT * FROM waren – legt fest, dass alle Felder aus der Warentabelle ausgewählt werden sollen;

ORDER BY – Sortierbefehl;

Titel – die Spalte, nach der die Sortierung durchgeführt wird.

Das Ergebnis der Ausführung einer solchen Anfrage ist wie folgt:

Num Titel Preis
3 Ananas80
2 Wassermelone120
4 Banane40
1 Mandarin50

Sie können auch nach beliebigen Tabellenfeldern sortieren.

Sortierrichtung

Standardmäßig sortiert der Befehl ORDER BY in aufsteigender Reihenfolge. Um die Sortierrichtung manuell zu steuern, verwenden Sie nach dem Spaltennamen das Schlüsselwort ASC (aufsteigend) oder DESC (absteigend). Um unsere Tabelle in absteigender Preisreihenfolge anzuzeigen, müssen Sie die Abfrage also wie folgt stellen:

WÄHLEN * AB Ware BESTELLEN NACH Preis BESCHREIBUNG

Sortiert nach aufsteigendem Preis:

WÄHLEN * AUS WARENBESTELLUNG NACH Preis ASC

Sortieren nach mehreren Feldern

SQL ermöglicht das gleichzeitige Sortieren nach mehreren Feldern. Dazu werden nach dem ORDER BY-Befehl die erforderlichen Felder durch Kommas getrennt angegeben. Die Reihenfolge des Abfrageergebnisses wird in derselben Reihenfolge konfiguriert, in der die Sortierfelder angegeben werden.

Spalte1 Spalte2 Spalte3
3 1 C
1 3 C
2 2 B
2 1 B
1 2 A
1 3 A
3 4 A

Sortieren wir die Tabelle nach den folgenden Regeln:

WÄHLEN * FROM mytable ORDER BY Spalte1 ASC, Spalte2 DESC, Spalte3 ASC

Diese. Die erste Spalte ist aufsteigend, die zweite absteigend und die dritte wieder aufsteigend. Die Abfrage ordnet die Zeilen nach der ersten Spalte und dann, ohne die erste Regel zu verletzen, nach der zweiten Spalte. Dann auch, ohne gegen die bestehenden Regeln zu verstoßen, so der Dritte. Das Ergebnis wird ein Datensatz wie dieser sein:

Spalte1 Spalte2 Spalte3
1 3 A
1 3 C
1 2 A
2 2 B
2 1 B
3 1 A
3 1 C

Reihenfolge des ORDER BY-Befehls in einer Abfrage

Das Sortieren von Zeilen erfolgt meist zusammen mit einer Bedingung für die Datenauswahl. Der Befehl ORDER BY wird nach der Auswahlbedingung WHERE platziert. Wir wählen beispielsweise Produkte mit einem Preis von weniger als 100 Rubel aus, sortiert nach Namen und in alphabetischer Reihenfolge:

WÄHLEN * AB Ware WO Preis 100 BESTELLEN NACH Preis ASC

Oft besteht die Notwendigkeit, das Ergebnis einer Abfrage in einer bestimmten Reihenfolge, beispielsweise alphabetisch, anzuzeigen. Zu diesem Zweck verfügt das DBMS über eine spezielle Funktion in der SQL-Sprache – die Sortierung. In diesem Fall kann der Programmierer ohne ernsthafte Programmierkenntnisse auswählen, welche Felder und in welcher Reihenfolge sie angezeigt werden, um das gewünschte Ergebnis zu erzielen.

Was ist Sortieren in einer Datenbank?

Die Arbeit mit Datenbanken ist ständig mit einer großen Menge an Informationen verbunden, die organisiert werden müssen. Derzeit gibt es eine Reihe von DBMS mit einem breiten Funktionsumfang, die beliebtesten davon sind Oracle und MS SQL. Das Sortieren von Informationen als eines der Hauptverfahren bei der Arbeit mit Datenbanken wird durch eine spezielle integrierte Funktion in jeder Datenbank bereitgestellt.

Mit Ranking-Daten können Sie den Suchvorgang vereinfachen und in manchen Fällen dabei helfen, bestimmte Probleme zu lösen oder den Betrieb des Programms zu optimieren. Die SQL-Sortierung erfolgt durch ein separat ausgewähltes Feld. Wenn die Elemente dieses Felds identische Werte enthalten, können Sie bei Bedarf zusätzliche Parameter angeben, die die Position der Zeilen bestimmen.

Sortierbefehl

Die SQL-Sortierung in der Datenbank erfolgt mithilfe der Funktion ORDER BY. Wenn Sie also Informationen aus einer Datenbank ausgeben, müssen Sie nach der Angabe der Spalten und Tabellen, aus denen sie gelesen werden, einen Sortierbefehl in der Abfrage angeben und dann das Feld oder die Felder definieren, nach denen die Sortierung durchgeführt wird.

Wenn Sie beispielsweise Daten aus den Feldern „Name“ und „Alter“ aus der Tabelle „Personen“ abrufen müssen und das Ergebnis in alphabetischer Reihenfolge nach der Spalte „Name“ anzeigen möchten, hilft die folgende Abfrage: WÄHLEN Sie Name, Alter AUS Personen, BESTELLEN NACH Namen.

Wie stelle ich die Sortierreihenfolge ein?

Moderne Bedingungen stellen Programmierer vor vielfältige Aufgaben und manchmal muss vorher festgelegt werden, in welcher Reihenfolge das Ergebnis angezeigt wird – in absteigender oder aufsteigender Reihenfolge, in alphabetischer Reihenfolge oder in umgekehrter Reihenfolge? Und um dies in SQL zu erreichen, wird die Sortierreihenfolge durch Hinzufügen eines Schlüsselworts zur Abfrage bestimmt. Nachdem Sie die Felder und Tabellen ausgewählt haben, aus denen die gewünschten Informationen abgerufen werden sollen, müssen Sie ORDER BY hinzufügen und dann den Namen der Spalte angeben, nach der Sie sortieren möchten.

Um die umgekehrte Reihenfolge zu erhalten, müssen Sie den Parameter DESC nach dem Namen angeben. Wenn es notwendig ist, Elemente nach zwei oder mehr Kriterien zu ordnen, werden die Spalten durch Kommas getrennt angegeben und das Feld, das in der Liste an erster Stelle steht, hat in der Rangfolge Vorrang. Es ist zu beachten, dass der DESC-Parameter nur ein Feld zum Anordnen von Elementen in umgekehrter Reihenfolge bereitstellt, nach dessen Namen dieses Schlüsselwort angegeben wird. Daher muss es bei Bedarf in allen ausgewählten Spalten angegeben werden.

Alternative Sortiermethoden

Wenn es nicht möglich ist, die integrierte SQL-Sortierfunktion zu verwenden, können Sie einen der bekannten Algorithmen schreiben. Wenn Sie die schnellste Reihenfolge der Elemente erreichen möchten, sollten Sie eine Methode verwenden, die auf der Aufteilung des Elementarrays in zwei Hälften basiert. Sehr beliebt sind auch die „Bubble“-Ranking-Methoden, bei denen zwei benachbarte Elemente vertauscht werden, wenn sie falsch positioniert sind, die „Pyramidensortierung“, die das größte Element an das Ende der Liste schickt, und die „Einfügungssortierung“, die legt nacheinander die Position jedes Elements fest.

Das Schreiben eines Algorithmus selbst erhöht die Sortiergeschwindigkeit nicht wesentlich, trägt jedoch zur Entwicklung von Programmierkenntnissen bei und ermöglicht Ihnen außerdem, den Prozess zu modifizieren, indem Sie das Ranking-Schema an eine bestimmte Datenbank anpassen, um die Effizienz des Programms zu verbessern.


Nächster Zyklus:

Schritt 8: Einfache Sortierung

Wenn das Ergebnis Ihrer SQL-Abfrage als Quellmaterial für einen Bericht dienen soll, ist die Frage der Sortierung der darin enthaltenen Daten äußerst wichtig, da es für eine Person, die einen Bericht liest, der nicht ordnungsgemäß sortiert ist, sehr schwierig ist, die Daten schnell zu finden Informationen, die sie benötigen. Um Daten nach Abfrageergebnisspalten (in unserem Fall nach Tabellenfeldern) zu sortieren, verwendet SQL das Schlüsselwort ORDER BY. Nachfolgend finden Sie ein Beispiel für die einfachste Sortierung. Als Grundlage dient die Anfrage aus Schritt 2: „Anfrage mit einfachem Auswahlkriterium.“ Wir sortieren Mitarbeiter nach dem Feld S_NAME (vollständiger Name).

SELECT S_NAME, S_EXPERIENCE FROM D_STAFF WHERE S_EXPERIENCE

Sortieren des Ergebnisses einer SQL-Abfrage nach einem Feld.

Schritt 9. Komplexe Sortierung

Es ist oft und sogar fast immer notwendig, Daten nach mehr als einer Spalte und nicht immer in aufsteigender Reihenfolge zu sortieren. Die SQL-Syntax erfordert eine durch Kommas getrennte Liste von Spalten nach dem Schlüsselwort ORDER BY sowie eine Sortiermethode für jede Spalte: in aufsteigender Reihenfolge der Werte – ASC oder in absteigender Reihenfolge – DESC. Im folgenden Beispiel zeigen wir Datensätze für alle Mitarbeiter in absteigender Reihenfolge ihrer Betriebszugehörigkeit. Wir sortieren Mitarbeiter mit gleicher Betriebszugehörigkeit alphabetisch.

SELECT S_EXPERIENCE, S_NAME FROM D_STAFF ORDER BY S_EXPERIENCE DESC, S_NAME ASC


Sortieren des Ergebnisses einer SQL-Abfrage nach zwei Feldern.

Sehr oft wird die umgekehrte Sortierreihenfolge bei Spalten wie [Datum] verwendet. Wenn das Datum beispielsweise das Datum speichert, an dem die Informationen eingegeben wurden, stehen bei der umgekehrten Sortierung ganz am Anfang der Liste die Datensätze, die relativ zum Rest kürzlich hinzugefügt wurden. Wenn eine Abfrage Nachrichtenankündigungen aus der Datenbank abruft, erhalten wir eine Liste der Ankündigungen, die in absteigender Reihenfolge ihrer Relevanz sortiert sind. Dies kann äußerst nützlich sein, da Ankündigungen normalerweise von oben nach unten gelesen werden und selbst auf Nachrichtenseiten nicht alle Sie werden gezeigt, aber nur einige der „frischesten“.

Die ORDER BY-Klausel in Access sortiert die von einer Abfrage zurückgegebenen Datensätze in aufsteigender oder absteigender Reihenfolge der Werte der angegebenen Felder.

Syntax

WÄHLEN field_list
AUS Tisch
WO Auswahlbedingung
[, Feld2 ][, ...]]]

Eine SELECT-Anweisung mit einer ORDER BY-Klausel enthält die folgenden Elemente:

Notizen

Die ORDER BY-Klausel ist optional. Es sollte verwendet werden, wenn Sie Daten in sortierter Form anzeigen müssen.

Die Standardsortierreihenfolge ist aufsteigend (A bis Z, 0 bis 9). Die beiden folgenden Beispiele zeigen die Sortierung von Mitarbeiternamen nach Nachnamen.

WÄHLEN Sie Nachname, Vorname aus
VON Mitarbeitern
Sortieren nach Nachname;
WÄHLEN Sie Nachname, Vorname aus
VON Mitarbeitern
ORDNUNG NACH Nachname ASC;

Um in absteigender Reihenfolge zu sortieren (Z bis A, 9 bis 0), fügen Sie das reservierte Wort DESC am Ende jedes Felds hinzu, nach dem Sie die Datensätze sortieren möchten. Im folgenden Beispiel werden die Namen der Mitarbeiter in absteigender Reihenfolge des Gehalts sortiert.

WÄHLEN Sie Nachname, Gehalt
VON Mitarbeitern
ORDNUNG NACH Gehalt DESC, Nachname;

Wenn Sie in der ORDER BY-Klausel ein Feld angeben, das Memo-Daten oder OLE-Objekte enthält, tritt ein Fehler auf. Das Microsoft Access-Datenbankmodul unterstützt das Sortieren nach diesen Feldtypen nicht.

Die ORDER BY-Klausel ist normalerweise das letzte Element in einer SQL-Anweisung.

Sie können zusätzliche Felder in die ORDER BY-Klausel aufnehmen. Datensätze werden zunächst nach dem Feld sortiert, das zuerst in der ORDER BY-Klausel angegeben wurde. Datensätze mit denselben Werten des ersten Felds werden dann nach dem angegebenen zweiten Feld usw. sortiert.