![]() |
|
|||||
|
UNION-Abfragen Mit UNION-Abfragen lassen sich in Access Datensätze aus mehreren Tabellen und Abfragen zu einem Resultat vereinigen. Voraussetzung dafür ist lediglich, dass die Anzahl Felder übereinstimmt, nicht aber deren Typ oder Länge. Da Access im Abfrage-Entwurfsfenster UNION-Abfragen nicht unterstützt muss die Definition direkt im SQL-Fenster eingegeben werden. Das entsprechende Fenster kann in der Entwurfsansicht über den Menübefehl Abfrage/SQL spezifisch/Union aufgerufen werden:
Durch das Schlüsselwort UNION können zwei SELECT-Abfragen miteinander verbunden. Im folgenden Bild ist eine UNION-Abfrage abgebildet die eine Liste von Ländern aus den Tabellen tblDeutscheLaender und tblAndereLaender zusammenführt und als eine Liste ausgibt:
Wie dargestellt, können die Daten mit Hilfe von ORDER BY auch sortiert werden, wobei nur die Felder der ersten SELECT-Abfrage verwendet werden können.
Natürlich lassen sich die Daten nich nur sortieren, GROUP BY oder WHERE-Bedingungen können ebenso verwendet werden. Wie die grundsätzliche Syntax erkannen lässt, lassen sich auch mehrere UNION-Operatoren verwenden, es gibt keine Einschränkung auf zwei Tabellen oder Abfragen:
Menge kann eine Tabelle, eine bereits gespeicherte Abfrage, oder, wie oben gesehen, eine mit SELECT erzeugte Abfrage sein. Bei gespeicherte Tabellen oder Abfragen muss das Schlüsselwort TABLE vorangestellt werden. Obiges Beispiel lässt sich also auch folgendermassen zusammenführen:
Grundsätzlich unterdrückt UNION alle mehrfach vorkommenden Datensätze. Mit dem Operator ALL lassen sich jedoch auch alle Datensätz anzeigen. Keine Memo- oder OLE-Felder: Primärschlüssel:
Beispiel: Eine intressante UNION-Anwendung stellt folgendes Formular dar. Im Listenfeld wird zu der Länderliste einen zusätzlichen Eintrag "** Alle Länder ***" hinzugefügt, der dem Benutzer ermöglicht alle Karten gleichzeitig ausdrucken zu können. Da dieser Eintrag natürlich in keiner Tabelle abgelegt ist, wurde er mittels eine UNION-Abfrage hinzugefügt.
Bei der Erzeugung dieser Liste wurde mit einem kleinen Trick gearbeitet:
Die erste UNION-Verbindung führt die Tabellen tblDeutscheLaender und tblAndereLaender zusammen. Mit der zweiten UNION-Verbindung wird nun noch der Eintrag "*** Alle Länder***" hinzugefügt. Dabei liefert die dritte SELECT Abfrage einen Datensatz mit den Werten 0 und eben "*** Alle Länder***". Zwar kommen beide Werte nicht aus der angegebenen Tabelle tblDeutscheLaender, aber damit Access die Abfrage bearbeiten kann, muss eine Tabelle in der FROM-Klausel angegeben werden. Der Wert 0 wurde gewählt, da er in keiner der beiden Tabellen vorkommt. Damit lässt sich der Datensatz eindeutig idendifizieren.
Benötigen Sie Unterstützung oder weiterführende Informationen, gerne helfen wir Ihnen weiter, reden Sie doch einfach mit uns. Die Informationen dieser Seite dürfen, gemäss unseren Nutzungsbestimmungen, kostenlos weiterverwendet werden.
Reto Maurer's Software-Chuchi
|
||||||