Der SQL UNION Operator kombiniert die Zeilen aus zwei oder mehr Abfragen. Die Bedingung dafür ist, dass alle Abfragen die gleiche Menge an Spalten haben, bei denen die Datentypen kompatibel sind.

SELECT Spalte FROM Tabelle A 
UNION
SELECT Spalte FROM TabelleB; 
SQL UNION

Das heutige Thema lautet: SQL UNION. Vielleicht fragst du dich gerade, was das ist oder wie Du es verwenden kannst? Vielleicht hoffst du, dass dieser Befehl dein aktuelles Problem löst? Keine Sorge, wir haben alle Antworten auf deine Fragen!

SQL UNION im Detail

UNION ist ein SQL-Befehl, der die Ergebnisse von zwei oder mehr SELECT-Anweisungen in einem einzigen Resultat zusammenführt.

Es gibt allerdings wichtige Regeln, die beachtet werden müssen, wenn man den UNION-Befehl in SQL verwendet:

  1. Die SELECT Anweisungen innerhalb des SQL UNIONs müssen dieselbe Anzahl an Spalten haben.
  2. Die Spalten müssen den gleichen oder einen kompatiblen Datentypen haben.
  3. Die Namen der Spalten können sich zwar unterscheiden, aber die Spaltennamen der ersten Abfrage werden übernommen.

Der UNION agiert wie eine SELECT DISTINCT Anweisung und gibt keine doppelten Werte aus. UNION ALL hingegen gibt alle Werte, also auch Duplikate, aus.

Unterschiedlich zum JOIN kann UNION nicht zwei Zeilen zu einer zusammenfügen, sondern hängt nur zusätzliche Zeilen an die Abfrage.

Was ist der Unterschied zwischen SQL UNION und JOIN?

Auf dem ersten Blick ähnelt UNION der Funktionalität von JOINs in SQL, da beide Daten zusammenfügen. Der Unterschied liegt aber darin, wie sie das tun.

JOINs verbinden Tabellen horizontal. Das bedeutet wir suchen eine gemeinsame Spalte in zwei Tabellen und heften die Spalten anhand dieser Spalte an unsere Tabelle. Abhängig vom JOIN-Typen werden manchmal nur Spalten verbunden ohne neue Zeilen hinzuzufügen, Zeilen entfernt oder neue Zeilen hinzugefügt.

UNION verbindet Tabellen vertikal. Ähnlich wie beim Anhängen von Zeilen in einer Excel-Tabelle wird die Tabelle nur nach unten hin länger bzw. kürzer wenn sehr viele Duplikate entfernt werden. Damit kann UNION Tabellen miteinander verbinden, die eigentlich nicht in Beziehung zueinander stehen.

SQL UNION: Beispiel aus der Praxis

Die DataMines Universität hat zwei Tabellen: Studenten und Absolventen.

Bachelor-Absolventen können immer noch Studenten sein, wenn sie an unserer Uni noch ihren Master weitermachen. Möchten wir also alle Menschen, die je an unserer Uni studiert haben oder aktuell studieren, auflisten, müssen wir die Duplikate entfernen, die hier ihren Master weitermachen.

Dafür eignet sich der SQL UNION Befehl anstelle des UNION ALL Befehls, weil dieser Duplikate entfernt.

Studenten
Studenten-IDName
1Anna
2Ben
3Clara

 

Absolventen
Studenten-IDName
3Clara
4David
5Emma
 
SELECT Studenten-ID, Name FROM studenten
UNION
SELECT Studenten-ID, Name FROM absolventen; 
Output
Studenten-ID Name
1 Anna
2 Ben
3 Clara
4 David
5 Emma

SQL UNION ALL: Beispiel aus der Praxis

Ein Online Händler möchte nicht nur wissen, welche Städte in seinen Bestellungen vorkommen, sondern auch, wie häufig sie vorkommen. Sein Analyst bittet ihn dafür eine Liste vorzubereiten, in der für jede Bestellung die dazugehörige Stadt aufgelistet ist.

Bestellungen_2021
Bestell-IDStadt
1Berlin
2Hamburg
3Berlin
Bestellungen_2022
Bestell-IDStadt
2Hamburg
3Berlin
4Köln
 
SELECT Stadt FROM Bestellungen_2021
UNION ALL
SELECT Stadt FROM Bestellungen_2022; 
Output
Bestell-IDStadt
1Berlin
2Hamburg
3Berlin
2Hamburg
3Berlin
4Köln
 

Mit diesem Datensatz kann der Analyst mittels der Count-Funktion bestimmen, in welchen Städten in den 2021 und 2022 am häufigsten bestellt wurde.

Verwendung von UNION mit WHERE-Klausel

Man kann UNION zusammen mit WHERE verwenden, um gefilterte Resultate zu erhalten. Zum Beispiel, wenn Du nur die Produkte aus Tabelle_E und Tabelle_F vereinen möchtest, die mehr als 100 Einheiten verkauft haben.

Dafür musst du für beide Tabellen eine WHERE-Bedingung schreiben. Wenn du das WHERE nur am Ende des Befehls anhängst, wird nur die untere Tabelle_F gefiltert.

SELECT Produkt FROM Tabelle_E WHERE Verkaufte_Einheiten > 100
UNION
SELECT Produkt FROM Tabelle_F WHERE Verkaufte_Einheiten > 100; 

Möchtest du aber erst die Tabellen kombinieren und erst danach filtern, eignet sich eine Common Table Expression, was auch als WITH-Statement bekannt ist. Wir erstellen damit eine Zwischentabelle und filtern diese dann in einem nächsten Schritt.

WITH Tabelle_E_und_F AS (
    SELECT Produkt, Verkaufte_Einheiten FROM Tabelle_E
    UNION
    SELECT Produkt, Verkaufte_Einheiten FROM Tabelle_F
)

SELECT Produkt FROM Tabelle_E_und_F
WHERE Verkaufte_Einheiten > 100; 

Häufige SQL UNION-Fehler und deren Lösungen

Trotz seiner Einfachheit kann SQL UNION manchmal etwas knifflig werden.

Anzahl der Spalten ist unterschiedlich

Problem: Die Tabellen, die man mit UNION kombinieren möchte, haben unterschiedlich viele Spalten haben.
Lösung: Hierfür muss man im SELECT-Befehl beider Tabellen prüfen, ob genau gleich viele Spalten ausgegeben werden.

Datentypen sind inkompatibel

Problem: Die entsprechenden Spalten inkompatible Datentypen aufweisen. In solchen Fällen gibt SQL einen Fehler zurück.

Lösung: Sicherstellen, dass die Reihenfolge der SELECT Befehle zwischen beiden UNION-Tabellen logisch ist. Andernfalls haben Daten in einer Tabelle einen Datentypen, der zur Haupttabelle angepasst werden muss. Eine Spalte, die nur Zahlen enthalten soll, kann nicht mit Texten kombiniert werden.

Duplikate werden gelöscht

Problem: Beim SQL UNION Befehl werden nicht alle Ergebnisse ausgegeben. Es scheint als wären Duplikate entfernt.
Lösung: Um Duplikate im Datensatz bestehen zu lassen, muss man den UNION ALL Befehl nutzen.

Zusammenfassung und Schlussfolgerungen

Wir haben gelernt, was SQL UNION ist, seine Regeln und wie es sich von anderen SQL-Kommandos unterscheidet. Außerdem haben wir gesehen, wie es in der Praxis angewendet werden kann und einige häufige Fehler und deren Behebung diskutiert.

Es ist wichtig zu beachten, dass SQL UNION nur ein Werkzeug in Deinem SQL-Toolkit ist. Es gibt viele andere, wie oder JOIN, INTERSECT oder EXCEPT, die je nach Situation nützlich sein können. Der Schlüssel zum Erfolg liegt darin, zu verstehen, wann und wie jedes Werkzeug verwendet werden soll.

Also, mach weiter und experimentiere. Nutze das, was Du gelernt hast, um Deine SQL-Fähigkeiten zu verbessern und Deine Daten effektiver zu verwalten. Wir hoffen, dass dieser Artikel hilfreich war und freuen uns auf Deine Erfolgsgeschichten. Bis zum nächsten Mal!

ARTIKEL TEILEN

Hast du Fragen? Hinterlasse einen Kommentar!