UNION-Abfragen

Auswahlabfragen liefern normalerweise immer die Daten aus einer einzigen Tabelle oder aus mehreren miteinander verknüpften Tabellen. In letzterem Fall soll die Abfrage immer die Kombination der Daten von verknüpften Tabellen liefern. Gelegentlich sollen die Daten von zwei oder mehr Tabellen in einer Abfrage aber auf andere Art zusammengestellt werden – nämlich so, dass die Datensätze dieser Tabellen jeweils als einzelne Datensätze erscheinen. So lassen sich dann beispielsweise Daten wie die Namen und Geburtsdaten von Personal und Kunden in einer Abfrage zusammenstellen und können als Geburtstagsliste dienen. Wie Sie UNION-Abfragen formulieren und was dabei zu beachten ist, zeigt dieser Beitrag.

Zusammenführen von Daten

Es gibt verschiedene Gründe für den Einsatz von UNION-Abfragen. Sie können diese nutzen, um die Daten verschiedener Tabellen wie der oben genannten Personal- und Kundentabelle zusammenzuführen, um daraus eine Liste der Geburtstage von Mitarbeitern und Kunden zu erstellen.

Oder Sie nutzen UNION-Abfragen, um das Ergebnis einer solchen Abfrage mit INSERT INTO in eine neue Tabelle zu transferieren. Diese Möglichkeit können Sie beispielsweise nutzen, um erst Daten aus externen Dateien wie etwa CSV-Dateien in jeweils eigene Tabellen zu importieren und diese dann per UNION-Abfrage zusammenzuführen.

Eine weitere Möglichkeit der Nutzung ist das Hinzufügen von Daten, die normalerweise nicht in einer Datenquelle vorkommen, aber dennoch angezeigt werden sollen – etwa, um die Liste der Einträge eines Kombinationsfeldes um Einträge wie oder zu ergänzen. Wie letzteres gelingt, schauen wir uns im Detail im Beitrag Kombinationsfeld mit Extraeinträgen an (www.access-im-unternehmen.de/1206).

Beispieldatenbank

Zu Beispielzwecken wollen wir davon ausgehen, dass wir die Artikellisten verschiedener Kategorien von verschiedenen Quellen beispielsweise im CSV-Format erhalten und diese dann zunächst über den Import der Textdateien in jeweils eine eigene Tabelle für jede Kategorie überführen.

Das Ergebnis sieht dann so aus, dass wir im Navigationsbereich sieben Tabellen mit verschiedenen Bezeichnungen wie tblArtikel_Fleischprodukte, tblArtikel_Getreideprodukte und so weiter vorfinden, die dann tatsächlich nur die Artikel der jeweiligen Kategorien enthalten. Der Einfachheit halber gehen wir davon aus, dass wir die Tabellen beim Import bereits in eine passende Struktur überführt haben (siehe Bild 1).

Beispielmaterial: sieben Tabellen mit Artikeln unterschiedlicher Kategorien

Bild 1: Beispielmaterial: sieben Tabellen mit Artikeln unterschiedlicher Kategorien

Wir könnten die Tabellen nun auch mit mehreren INSERT INTO-Abfragen in eine Zieltabelle mit gleicher Struktur einfügen, aber in diesem Beitrag soll es sich ja um die Verwendung von UNION-Abfragen drehen.

Erstellen von UNION-Abfragen

Access ist deshalb so beliebt, weil es für fast alle Aufgaben eine grafische Benutzeroberfläche bietet. Aber auch nur für fast alle Aufgaben. UNION-Abfragen sind eine der wenigen Ausnahmen, denn diese können Sie nur in der sogenannten SQL-Ansicht definieren.

Das zieht nach sich, dass Sie zumindest über grundlegende SQL-Kenntnisse verfügen sollten. In unserem Fall reicht es aus, dass Sie den einfachsten Aufbau verstehen. Die notwendigen SQL-Teilabfragen, die wir später per UNION-Schlüsselwort verknüpfen wollen, können Sie allerdings auch über die Entwurfsansicht für Abfragen erstellen – jedoch müssen Sie dann in die SQL-Ansicht wechseln, um an den passenden SQL-Code heranzukommen. Für den Start erstellen Sie also zunächst eine neue, leere Abfrage. Dazu verwenden Sie den Ribbon-Eintrag Erstel-len|Ab-fra-gen|Abfrageentwurf. In die nun erscheinende Entwurfsansicht fügen wir per Doppelklick auf den Eintrag tblArtikel_Fleischprodukte die erste Tabelle ein (siehe Bild 2).

Hinzufügen einer Tabelle zum Abfrageentwurf

Bild 2: Hinzufügen einer Tabelle zum Abfrageentwurf

Dann schließen wir den Dialog Tabelle anzeigen und klicken doppelt auf das Sternchen (*) in der Feldliste der Tabelle tblArtikel_Fleischprodukte, um diesen Eintrag zum Entwurfsraster der Abfrage hinzuzufügen. Anschließend können Sie den Ribbon-Eintrag Ent-wurf|Er-gebnisse|Ansicht|SQL-An-sicht betätigen, um in die SQL-Ansicht der neu erstellten Abfrage zu wechseln (siehe Bild 3).

Wechsel zur SQL-Ansicht einer Abfrage

Bild 3: Wechsel zur SQL-Ansicht einer Abfrage

Damit erhalten Sie nun die SQL-Ansicht der Abfrage (siehe Bild 4) und gleichzeitig das Werkzeug für die folgenden Beispiele dieses Beitrags.

SQL-Ansicht einer Abfrage

Bild 4: SQL-Ansicht einer Abfrage

Wenn Sie nun den Ribbon-Befehl Entwurf|Ergeb-nis-se|An-sicht|Da-ten-blatt betätigen, erhalten Sie das Ergebnis der Abfrage mit allen Datensätzen der Tabelle tblArtikel_Fleischprodukte.

UNION einsetzen

Damit naht der Auftritt des UNION-Schlüsselworts: Wir wollen nun nicht mehr nur die Daten der Tabelle tblArtikel_Fleischprodukte ausgeben, sondern auch noch die Einträge der Tabelle tblArtikel_Getreideprodukte hinzufügen. Dazu erweitern wir die Abfrage nun wie folgt:

SELECT tblArtikel_Fleischprodukte.*
FROM tblArtikel_Fleischprodukte
UNION
SELECT tblArtikel_Getreideprodukte.*
FROM tblArtikel_Getreideprodukte;

Wir fügen also eine weitere, genau gleich aufgebaute SELECT-Abfrage hinzu, die lediglich die Daten einer anderen Tabelle liefert, und verknüpfen die beiden Abfragen mit dem UNION-Schlüsselwort (die erste SELECT-Abfrage darf dabei nicht mehr mit dem Semikolon abschlossen werden).

Wenn Sie nun in die Datenblattansicht wechseln, erhalten Sie das Ergebnis aus Bild 5. Eine Besonderheit bei diesem Abfrageergebnis ist, dass die in den ursprünglichen Tabellen als Nachschlagefelder ausgelegten Felder LieferantID und KategorieID nun nicht mehr als solche dargestellt werden, sondern nur noch die tatsächlichen Feldwerte anzeigen. Die Abfrage können Sie auch noch ein wenig vereinfacht darstellen:

Ergebnis einer UNION-Abfrage

Bild 5: Ergebnis einer UNION-Abfrage

SELECT * FROM tblArtikel_Fleischprodukte
UNION
SELECT * FROM tblArtikel_Getreideprodukte;

Speichern der UNION-Abfrage

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar