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 <auswählen> </auswählen>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 die Tabellen beim Import bereits in einer passenden Struktur vorliegen (siehe Bild 1).
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).
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).
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.
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-Abfragen 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:
Bild 5: Ergebnis einer UNION-Abfrage
SELECT * FROM tblArtikel_Fleischprodukte UNION SELECT * FROM tblArtikel_Getreideprodukte;
Speichern der UNION-Abfrage
Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...
Oder bist Du bereits Abonnent? Dann logge Dich gleich hier ein. Die Zugangsdaten findest Du entweder in der aktuellen Print-Ausgabe auf Seite U2 oder beim Online-Abo in der E-Mail, die Du als Abonnent regelmäßig erhältst:
Weitere interessante Artikel zu diesem Thema
Kreuztabellenabfragen in der Praxis