Der SQL UNION Operator
Geschrieben von: Christian Holm 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:
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 TabellenAngenommen, 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 InstanzenNatü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 ViewsMit 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ßbemerkungDieser 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. Verwandte Artikel
Aktualisieren von Daten mit dem UPDATE Statement Wenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |