Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Der SQL UNION Operator

Geschrieben von: Christian Holm
Kategorie: Datenbank

This printed page brought to you by AlphaSierraPapa

Dieser Artikel stellt Ihnen den T-SQL UNION Operator in Anwendung und Funktion vor. Im Gegensatz zur Verwendung von JOIN werden hier die Ergebnisse von zwei oder mehreren Queries (Abfragen) kombiniert angezeigt. Der UNION Operator findet also Anwendung z.B. wo die WHERE Clause in Verbindung mit den logischen Operatoren keine Ergebnisse liefern kann oder wenn Views erstellt werden sollen, die sich auf mehrere Datenbanken oder SQL-Server Instanzen beziehen.

Die Beispielqueries, die in diesem Artikel gezeigt werden, demonstrieren folgende Anwendungen:

Bevor ich mit den Beispielen beginne, natürlich die syntaktisch richtige Verwendung des UNION Operators zuallererst:

Query_1
UNION [ALL]
Query_2
...
UNION [ALL]
Query_n

Der Ausdruck Query repräsentiert hier eine beliebige SQL-Abfrage. Mit UNION können je nach Erfordernis beliebig viele Queries verbunden werden. Wenn das optionale ALL-Keyword verwendet wird, werden auch duplikate Datensätze im Ergebnis mitangezeigt. Natürlich müssen Sie bei der Verwendung des Operators auch einiges beachten:

Beispiel:

Tabelle Sales2000 Tabelle Sales2001
Quarter Amount Amount Quarter
1 2421 3654 1
2 2023 1265 2
SELECT Quarter, Amount FROM Sales2000
UNION
SELECT Quarter, Amount FROM Sales2001 /* Reihenfolge der Tabelle in der Resultatanzeige geändert */

Beispiel:

SELECT Feld1, Feld2, Feld_n FROM Table/DB/Instance
UNION
SELECT Feld1, Feld2, Feld_m FROM Table/DB/Instance /* wobei n gleich m */

Beispiel:

SELECT SurName AS LastName FROM Table/DB/Instance
UNION
SELECT LastName FROM Table/DB/Instance

Nach dieser Einführung in Syntax und Verwendung, folgt nun die Implementierung der eingangs erwähnten Problemstellungen:

Finden eines Suchbegriffs in mehreren Tabellen

Angenommen, Sie wollen die Gesamtanzahl aller verkauften Produkte Ihrer Firma anzeigen. Da aber jede Produktionsstätte (A,B,C), wo die Produkte hergestellt werden, eine eigene Tabelle besitzt, müssen Sie in mehreren Tabellen nach den verkauften Produkten suchen. Da Duplikate möglich sind (jede Produktionsstätte kann ja dieselben Produkte erstellen), ist die Verwendung von ALL notwendig:

SELECT ProductName, UnitsSold FROM Facts_Divison_A
UNION ALL
SELECT ProductName, UnitsSold FROM Facts_Divison_B
UNION ALL
SELECT ProductName, UnitsSold FROM Facts_Divison_C

Finden eines Suchbegriffs in mehreren Datenbanken oder Instanzen

Natürlich können die die einzelnen Tabellen aus dem vorigen Beispiel auch auf verschiedenen Instanzen verteilt sein:

SELECT ProductName, UnitsSold FROM SVR_USA.MyCompanyDB.dbo.Facts_Divison_A
UNION ALL
SELECT ProductName, UnitsSold FROM SVR_EUROPE.MyCompanyDB.dbo.Facts_Divison_B
UNION ALL
SELECT ProductName, UnitsSold FROM SVR_ASIA.MyCompanyDB.dbo.Facts_Divison_C

Erstellen eines Views

Mit Views können Sie Daten aggregieren, die z.B. auf mehrere SQL-Server Instanzen aufgeteilt sind. Die Erstellung einer View (Division_Cluster) unter Verwendung des UNION Operators könnte dann so aussehen:

CREATE VIEW Division_Cluster AS
SELECT ProductName, UnitsSold FROM SVR_USA.MyCompanyDB.dbo.Facts_Divison_A
UNION ALL
SELECT ProductName, UnitsSold FROM SVR_EUROPE.MyCompanyDB.dbo.Facts_Divison_B
UNION ALL
SELECT ProductName, UnitsSold FROM SVR_ASIA.MyCompanyDB.dbo.Facts_Divison_C

Schlußbemerkung

Dieser Artikel zeigte Ihnen anhand von einfachen Beispielen die Verwendung des UNION SQL-Operators und die hierfür einzuhaltenden Regeln. Mit dem UION Operator müssen die Abfragen nicht mehr auf eine Tabelle beschränkt werden sondern es können mit einem Job mehrere Tabellen, Datenbanken oder auch Instanzen abgefragt werden.

This printed page brought to you by AlphaSierraPapa

Verwandte Artikel

Aktualisieren von Daten mit dem UPDATE Statement
http:/www.aspheute.com/artikel/20001124.htm
Das SQL Join Statement
http:/www.aspheute.com/artikel/20001023.htm
Die SQL ORDER BY Clause
http:/www.aspheute.com/artikel/20001201.htm
Einfügen eines Datensatzes mit dem INSERT Statement
http:/www.aspheute.com/artikel/20001107.htm
Stored Procedures einfach erstellt
http:/www.aspheute.com/artikel/20020903.htm
T-SQL Clauses: GROUP BY und HAVING
http:/www.aspheute.com/artikel/20011017.htm

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.