Wie man in SQL bei einem Tabellenjoin nach den Spalten jeder Tabelle mit ORDER BY sortiert

Wenn Sie in SQL mehrere Tabellen zusammenführen, ist es wichtig, die Daten basierend auf einer bestimmten Spalte zu sortieren, um die Lesbarkeit und die Effizienz der Analyse zu verbessern. In diesem Artikel wird erläutert, wie Sie mehrere Tabellen zusammenführen und die Daten mithilfe von ORDER BY nach den Spalten jeder Tabelle sortieren können.

Inhaltsverzeichnis

Grundlegende Erklärung des Tabellenjoins

Ein Tabellenjoin ist eine Methode in SQL, bei der mehrere Tabellen kombiniert werden, um ein einziges Ergebnisset zu erstellen. Es gibt hauptsächlich INNER JOIN, LEFT JOIN, RIGHT JOIN und FULL JOIN. Dadurch können Sie verwandte Daten integrieren und auf einmal abrufen.

INNER JOIN

Ein INNER JOIN gibt nur die Zeilen zurück, die in beiden Tabellen übereinstimmen.

LEFT JOIN

Ein LEFT JOIN gibt alle Zeilen der linken Tabelle und die übereinstimmenden Zeilen der rechten Tabelle zurück. Wenn keine Übereinstimmung gefunden wird, wird NULL zurückgegeben.

RIGHT JOIN

Ein RIGHT JOIN gibt alle Zeilen der rechten Tabelle und die übereinstimmenden Zeilen der linken Tabelle zurück. Wenn keine Übereinstimmung gefunden wird, wird NULL zurückgegeben.

FULL JOIN

Ein FULL JOIN gibt alle Zeilen beider Tabellen zurück und füllt nicht übereinstimmende Zeilen mit NULL auf.

Grundlegende Syntax von ORDER BY

Die ORDER BY-Klausel wird verwendet, um das Ergebnis einer SQL-Abfrage basierend auf einer bestimmten Spalte zu sortieren. Die Sortierreihenfolge kann durch Angabe von ASC (aufsteigend) oder DESC (absteigend) gesteuert werden. Die grundlegende Syntax lautet wie folgt:

Grundlegende Syntax

SELECT column_name1, column_name2, ...
FROM table_name
ORDER BY column_name1 [ASC|DESC], column_name2 [ASC|DESC], ...;

Beispiel: Sortierung nach einer einzelnen Spalte

SELECT first_name, last_name
FROM employees
ORDER BY last_name ASC;

In diesem Beispiel wird die Spalte last_name der Tabelle employees in aufsteigender Reihenfolge sortiert.

Beispiel: Sortierung nach mehreren Spalten

SELECT first_name, last_name, hire_date
FROM employees
ORDER BY last_name ASC, hire_date DESC;

In diesem Beispiel wird zuerst die Spalte last_name in aufsteigender Reihenfolge und anschließend die Spalte hire_date in absteigender Reihenfolge sortiert.

Verwendung von ORDER BY beim Zusammenführen mehrerer Tabellen

Auch beim Zusammenführen mehrerer Tabellen können Sie die ORDER BY-Klausel verwenden, um das Ergebnisset zu sortieren. Sie geben eine Spalte einer der zusammengeführten Tabellen an, um die Sortierung vorzunehmen. In einer Join-Abfrage wird die ORDER BY-Klausel auf das gesamte Ergebnisset nach der Zusammenführung angewendet.

Grundlegende Syntax

SELECT table1.column_name1, table2.column_name2, ...
FROM table1
JOIN table2 ON table1.common_column = table2.common_column
ORDER BY table1.column_name1 [ASC|DESC], table2.column_name2 [ASC|DESC], ...;

Beispiel: INNER JOIN und ORDER BY

Im folgenden Beispiel werden die Tabellen employees und departments zusammengeführt und das Ergebnisset wird nach der Spalte department_name der Tabelle departments und der Spalte last_name der Tabelle employees sortiert.

SELECT employees.first_name, employees.last_name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.department_id
ORDER BY departments.department_name ASC, employees.last_name DESC;

In dieser Abfrage wird die Spalte department_name in aufsteigender Reihenfolge sortiert, und die Mitarbeiter innerhalb derselben Abteilung werden nach der Spalte last_name in absteigender Reihenfolge sortiert.

Sortieren nach Spalten aus verschiedenen Tabellen

Beim Zusammenführen mehrerer Tabellen ist es möglich, basierend auf Spalten aus verschiedenen Tabellen zu sortieren. In diesem Fall müssen Sie die Spalten, die Sie in der ORDER BY-Klausel angeben, zusammen mit den Tabellennamen explizit angeben.

Beispiel: LEFT JOIN und Sortierung nach mehreren Spalten

Im folgenden Beispiel werden die Tabellen customers und orders zusammengeführt und das Ergebnisset wird nach der Spalte customer_name der Tabelle customers und der Spalte order_date der Tabelle orders sortiert.

SELECT customers.customer_name, orders.order_id, orders.order_date
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id
ORDER BY customers.customer_name ASC, orders.order_date DESC;

In dieser Abfrage wird zuerst die Spalte customer_name in aufsteigender Reihenfolge sortiert, und die Bestellungen desselben Kunden werden nach der Spalte order_date in absteigender Reihenfolge sortiert.

Beispiel: RIGHT JOIN und Sortierung nach mehreren Spalten

Als nächstes wird gezeigt, wie die Tabellen employees und projects zusammengeführt und das Ergebnisset nach der Spalte project_name der Tabelle projects und der Spalte last_name der Tabelle employees sortiert wird.

SELECT employees.first_name, employees.last_name, projects.project_name
FROM projects
RIGHT JOIN employees ON projects.project_lead_id = employees.employee_id
ORDER BY projects.project_name ASC, employees.last_name ASC;

In dieser Abfrage wird zuerst die Spalte project_name in aufsteigender Reihenfolge sortiert, und die Mitarbeiter, die demselben Projekt zugeordnet sind, werden nach der Spalte last_name in aufsteigender Reihenfolge sortiert.

Beispiel für echte SQL-Abfragen

Hier sind einige konkrete Beispiele für SQL-Abfragen, die mehrere Tabellen zusammenführen und nach den Spalten jeder Tabelle mit ORDER BY sortieren.

Beispiel 1: Sortierung mit INNER JOIN

Die folgende Abfrage verbindet die Tabellen students und grades und sortiert nach dem Namen der Schüler (Spalte student_name in der Tabelle students) und dem Bewertungsdatum (Spalte grade_date in der Tabelle grades).

SELECT students.student_name, grades.grade, grades.grade_date
FROM students
INNER JOIN grades ON students.student_id = grades.student_id
ORDER BY students.student_name ASC, grades.grade_date DESC;

In dieser Abfrage wird zuerst die Spalte student_name in aufsteigender Reihenfolge sortiert, und die Noten desselben Schülers werden nach der Spalte grade_date in absteigender Reihenfolge sortiert.

Beispiel 2: Sortierung mit LEFT JOIN

Die nächste Abfrage verbindet die Tabellen authors und books und sortiert nach dem Namen des Autors (Spalte author_name in der Tabelle authors) und dem Veröffentlichungsdatum des Buches (Spalte publication_date in der Tabelle books).

SELECT authors.author_name, books.book_title, books.publication_date
FROM authors
LEFT JOIN books ON authors.author_id = books.author_id
ORDER BY authors.author_name ASC, books.publication_date ASC;

In dieser Abfrage wird zuerst die Spalte author_name in aufsteigender Reihenfolge sortiert, und die Bücher desselben Autors werden nach der Spalte publication_date in aufsteigender Reihenfolge sortiert.

Beispiel 3: Sortierung mit RIGHT JOIN

Schließlich wird gezeigt, wie die Tabellen employees und departments zusammengeführt und das Ergebnisset nach der Spalte department_name der Tabelle departments und der Spalte last_name der Tabelle employees sortiert wird.

SELECT employees.first_name, employees.last_name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.department_id
ORDER BY departments.department_name ASC, employees.last_name ASC;

In dieser Abfrage wird zuerst die Spalte department_name in aufsteigender Reihenfolge sortiert, und die Mitarbeiter innerhalb derselben Abteilung werden nach der Spalte last_name in aufsteigender Reihenfolge sortiert.

Wichtige Punkte bei der Verwendung von ORDER BY

Beim Verwenden der ORDER BY-Klausel müssen einige Punkte berücksichtigt werden. Dies ermöglicht eine Leistungsverbesserung und verhindert unerwartete Ergebnisse.

Optimierung der Leistung

Da das Sortieren Rechenressourcen verbraucht, kann es die Leistung bei großen Datensätzen beeinträchtigen. Durch das Setzen geeigneter Indizes kann die Leistung der Sortierung verbessert werden. Insbesondere ist es hilfreich, einen Index auf den in der ORDER BY-Klausel verwendeten Spalten zu setzen.

Umgang mit NULL-Werten

Wenn NULL-Werte enthalten sind, werden sie standardmäßig an die oberste oder unterste Position sortiert. Um den Umgang mit NULL-Werten zu spezifizieren, können Sie NULLS FIRST oder NULLS LAST wie folgt verwenden:

ORDER BY column_name ASC NULLS FIRST;
ORDER BY column_name DESC NULLS LAST;

Reihenfolge bei der Sortierung nach mehreren Spalten

Wenn nach mehreren Spalten sortiert wird, erfolgt die Sortierung in der angegebenen Reihenfolge. Zeilen mit denselben Werten in der zuerst angegebenen Spalte werden nach der nächsten Spalte sortiert, daher ist es wichtig, die Spalten so auszuwählen, dass die gewünschte Reihenfolge erreicht wird.

Verwendung von Aliassen

Wenn einer Spalte in der Abfrage ein Alias zugewiesen wurde, kann dieser Alias in der ORDER BY-Klausel verwendet werden. Dadurch wird die Lesbarkeit der Abfrage verbessert.

SELECT first_name AS fname, last_name AS lname
FROM employees
ORDER BY lname ASC, fname ASC;

Auswirkungen von Joins

Da die Daten basierend auf den Join-Bedingungen gefiltert werden, kann das Ergebnis der ORDER BY-Klausel von der Art des Joins beeinflusst werden. Um das gewünschte Ergebnis zu erzielen, sollten Sie die Join-Bedingungen sorgfältig festlegen.

Wenn Sie diese Punkte berücksichtigen, können Sie die ORDER BY-Klausel effektiv verwenden und eine effiziente und genaue Datensortierung erreichen.

Zusammenfassung

In diesem Artikel haben wir erläutert, wie man mehrere Tabellen in SQL zusammenführt und die Daten nach den Spalten jeder Tabelle mit ORDER BY sortiert. Durch die Verwendung geeigneter Tabellenjoins und der ORDER BY-Klausel kann die Lesbarkeit und Effizienz der Datenanalyse verbessert werden. Indem Sie Punkte wie die Sortierung nach mehreren Spalten, den Umgang mit NULL-Werten und die Leistungsoptimierung berücksichtigen, können Sie effektivere Datenmanipulationen durchführen. Nutzen Sie diese Techniken, um fortgeschrittenere SQL-Abfragen zu erstellen und das Datenbankmanagement zu verbessern.

Inhaltsverzeichnis