Kombinieren mehrerer Abfragen in einem einzigen Ergebnis mithilfe einer Union-Abfrage

Wichtig :  Dieser Artikel wurde maschinell übersetzt. Bitte beachten Sie den Haftungsausschluss. Die englische Version des Artikels ist als Referenz hier verfügbar: hier.

Nehmen Sie an eine Access-Datenbank weist zwei nicht verknüpfte Tabellen – ein, in dem Kundendaten und einen anderen gespeichert, die Daten zu Lieferanten speichert – und beide Tabellen ein Kontaktinformationen-Feld vorhanden sein. Sie möchten die Kontaktinformationen aus beiden Tabellen in einer Ansicht anzuzeigen. Hierzu zuerst Erstellen einer Auswahlabfrage für jede Tabelle zum Abrufen der Kontaktinformationen, und klicken Sie dann die Ergebnisse durch Erstellen einer Union-Abfrage kombinieren.

Hinweis : Der Inhalt in diesem Artikel gelten für Access-Desktopdatenbanken. Erstellen oder mithilfe einer Union-Abfrage in Access Webdatenbanken oder Access Web apps.

Kenntnisse über das Erstellen grundlegende Auswahlabfragen? Finden Sie unter Erstellen einer Auswahlabfrage.

Zunächst einige Hinweise zum Erstellen einer Union-Abfrage:

  • Die Auswahlabfragen, die Sie in einer Union-Abfrage kombinieren, müssen über die gleiche Anzahl von Ausgabefeldern verfügen, und die Ausgabefelder müssen die gleiche Reihenfolge sowie die gleichen oder kompatible Datentypen aufweisen. Beim Ausführen einer Union-Abfrage werden die Daten aus jedem Satz einander entsprechender Felder in einem Ausgabefeld kombiniert, sodass die Ausgabe der Abfrage über die gleiche Anzahl von Feldern wie jede der SELECT-Anweisungen verfügt.

  • Eine Union-Abfrage ist SQL-spezifisch und muss daher direkt in SQL geschrieben werden. Wechseln Sie zur SQL-Ansicht, um SQL-spezifischer Abfragen wie Union-Abfragen zu schreiben.

Schritt 1: Erstellen der Auswahlabfragen

Hinweis : Obwohl in einer Abfrage mehrere Tabellen oder Abfragen enthalten sein können, wird bei diesem Verfahren davon ausgegangen, dass die einzelnen Auswahlabfragen nur Daten aus jeweils einer Tabelle umfassen.

  1. Klicken Sie auf der Registerkarte Erstellen in der Gruppe Abfragen auf Abfrageentwurf.

  2. Doppelklicken Sie im Dialogfeld Tabelle anzeigen auf die Tabelle, in der sich die einzuschließenden Felder befinden. Die Tabelle wird dem Abfrageentwurfsfenster hinzugefügt.

  3. Schließen Sie das Dialogfeld Tabelle anzeigen.

  4. Doppelklicken Sie im Abfrageentwurfsfenster auf jedes Feld, dass Sie einschließen möchten.
    Vergewissern Sie sich bei der Auswahl der Felder, dass Sie die gleiche Anzahl von Feldern in der gleichen Reihenfolge wie in den anderen Auswahlabfragen hinzufügen. Achten Sie auch unbedingt auf die Datentypen der Felder, und stellen Sie sicher, dass Felder an den gleichen Positionen in den anderen Abfragen, die Sie kombinieren möchten, den gleichen oder einen kompatiblen Datentyp aufweisen. Wenn Ihre erste Auswahlabfrage beispielsweise fünf Felder aufweist und das erste Feld vom Datentyp Datum/Uhrzeit ist, muss auch jede weitere Auswahlabfrage, die Sie kombinieren möchten, fünf Felder aufweisen und das erste hiervon muss den Datentyp Datum/Uhrzeit aufweisen usw.

  5. Fügen Sie Kriterien optional den Feldern hinzu, indem Sie die entsprechenden Ausdrücke in der Zeile Kriterien des feldrasters eingeben.

  6. Nachdem Sie die Felder und Feldkriterien hinzugefügt haben, sollten Sie die Auswahlabfrage ausführen und deren Ausgabe prüfen. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.

  7. Schalten Sie in die Entwurfsansicht der Abfrage um.

  8. Speichern Sie die Auswahlabfrage, und lassen Sie sie geöffnet.

  9. Wiederholen Sie dieses Verfahren für jede der Auswahlabfragen, die Sie kombinieren möchten.

Weitere Informationen zur Verwendung von Kriterien in einer Abfrage finden Sie unter Anwenden von Abfragekriterien.

Schritt 2: Kombinieren der Auswahlabfragen

In diesem Schritt erstellen Sie die union-Abfrage mithilfe von SQL-Anweisungen aus. (Weitere Informationen finden Sie unter Abschnitt SQL-Syntax .)

  1. Klicken Sie auf der Registerkarte Erstellen in der Gruppe Abfragen auf Abfrageentwurf.

  2. Schließen Sie das Dialogfeld Tabelle anzeigen.

  3. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Abfrage auf Union.

Access blendet das Abfrageentwurfsfenster aus und zeigt die Objektregisterkarte SQL-Ansicht an. Zu diesem Zeitpunkt ist die Objektregisterkarte SQL-Ansicht leer.

  1. Klicken Sie für die erste Auswahlabfrage, die Sie mit der Union-Abfrage kombinieren möchten, auf die Registerkarte.

  2. Klicken Sie auf der Registerkarte Start auf Ansicht > SQL-Ansicht.

  3. Kopieren Sie die SQL-Anweisung für die Auswahlabfrage. Klicken Sie auf die Registerkarte für die Union-Abfrage, mit deren Erstellung Sie in Schritt 1 begonnen haben.

  4. Fügen Sie die SQL-Anweisung für die Auswahlabfrage in die Objektregisterkarte SQL-Ansicht der Union-Abfrage ein.

  5. Löschen Sie das Semikolon (;) am Ende der SQL-Anweisung der Auswahlabfrage.

  6. Drücken Sie die EINGABETASTE, um den Cursor eine Zeile nach unten, und geben Sie in die neue Zeile UNION ein.

  7. Klicken Sie für die nächste Auswahlabfrage, die Sie mit der Union-Abfrage kombinieren möchten, auf die Registerkarte.

  8. Wiederholen Sie die Schritte 5 bis 10, bis Sie alle SQL-Anweisungen für die Auswahlabfragen kopiert und in das Fenster SQL-Ansicht der UNION-Abfrage eingefügt haben. Löschen Sie nicht das Semikolon, das auf die SQL-Anweisung für die letzte Auswahlabfrage folgt, und nehmen Sie hier auch keine Eingabe mehr vor.

  9. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.

Die Ergebnisse der UNION-Abfrage werden in der Datenblattansicht angezeigt.

Seitenanfang

Tipps für die Arbeit mit Union-Abfragen

  • Damit Sie unterscheiden können, welche Zeilen aus welcher Tabelle stammen, fügen Sie in den einzelnen SELECT-Anweisungen eine Textzeichenfolge als Feld hinzu.

    Wenn mit einer Auswahlabfrage beispielsweise Felder aus einer Tabelle mit Namen Artikel und mit einer weiteren Auswahlabfrage Felder aus einer Tabelle mit Namen Dienstleistungen abgerufen werden, fügen Sie die Zeichenfolge "Artikel" als Feld an das Ende der ersten Anweisung und die Zeichenfolge "Dienstleistung" als Feld an das Ende der zweiten Anweisung an. Sie können den Zeichenfolgen auch einen Feldalias (z. B. Typ) zuweisen, indem Sie (wie im folgenden Beispiel gezeigt) das Schlüsselwort AS verwenden:

    SELECT field1, field2, ... "Product" AS type

    SELECT field1, field2, ... "Service" AS type

    Die Abfrageausgabe enthält nun ein Feld mit Namen Typ, das angibt, ob die Zeile aus der Tabelle Artikel oder Dienstleistung stammt.

  • Mit jedem UNION-Schlüsselwort werden die SELECT-Anweisungen kombiniert, die dem Schlüsselwort unmittelbar vorangehen oder unmittelbar hierauf folgen. Wenn Sie in Verbindung mit einigen UNION-Schlüsselwörtern in der Abfrage das Schlüsselwort ALL verwenden, bei anderen jedoch nicht, enthält das Ergebnis die doppelten Zeilen aus den SELECT-Anweisungspaaren, die mithilfe von UNION ALL kombiniert wurden, jedoch keine doppelten Zeilen aus SELECT-Anweisungen, die mit UNION ohne ALL kombiniert wurden.

  • Anzahl, Datentyp und Reihenfolge der Felder in den Auswahlabfragen muss übereinstimmen. Sie können Ausdrücke wie Berechnungen oder Unterabfragen verwenden, um für diese Übereinstimmung zu sorgen.

    So können Sie beispielsweise für Übereinstimmung zwischen einem Feld mit einer zweistelligen Jahresangabe und einem Feld mit einer vierstelligen Jahresangabe sorgen, indem Sie mit der Funktion Rechts die letzten beiden Ziffern der vierstelligen Jahresangabe extrahieren.

Erstellen einer neuen Tabelle anhand der Ergebnisse einer Union-Abfrage

Verwenden Sie die union-Abfrage zunächst als Eingabe für eine neue Auswahlabfrage, und verwenden Sie diese Auswahlabfrage dann als Grundlage für eine Tabellenerstellungsabfrage, wie in den folgenden Schritten dargestellt:

  1. Erstellen und speichern Sie die Union-Abfrage.

  2. Klicken Sie auf der Registerkarte Erstellen in der Gruppe Abfragen auf Abfrageentwurf.

  3. Klicken Sie im Dialogfeld Tabelle anzeigen auf die Registerkarte Abfragen.

  4. Doppelklicken Sie auf die Union-Abfrage, und schließen Sie dann das Dialogfeld Tabelle anzeigen.

    Hinweis : Wird in der Statusleiste eine Sicherheitswarnung angezeigt, sind Aktionsabfragen möglicherweise deaktiviert. Klicken Sie zum Aktivieren von Aktionsabfragen in der Statusleiste auf Inhalt aktivieren.

  5. Doppelklicken Sie im Abfrageentwurfsbereich auf der Objektregisterkarte der Union-Abfrage auf den Stern (*), wenn alle Felder der Abfrage für die Erstellung der neuen Tabelle verwendet werden sollen.

  6. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Abfragetyp auf Tabelle erstellen.

  7. Geben Sie im Dialogfeld Tabelle erstellen einen Namen für die neue Tabelle ein.

  8. Geben Sie optional eine andere Datenbank an, in der die Tabelle erstellt werden soll.

  9. Klicken Sie auf OK.

  10. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.

Erstellen einer vollen äußeren Verknüpfung mithilfe einer Union-Abfrage

Mit einer Union-Abfrage kann eine volle Äußere Verknüpfung vorgenommen werden. Bei einer vollen äußeren Verknüpfung werden die Zeilen nicht eingeschränkt, die aus jeder der verknüpften Tabellen zurückgegeben werden, sondern auf Basis der Werte im Verknüpfungsfeld kombiniert.

  1. Erstellen Sie eine Abfrage, bei der eine linke äußere Verknüpfung für ein Feld definiert wurde, das Sie für eine volle äußere Verknüpfung verwenden möchten.

  2. Klicken Sie auf der Registerkarte Start in der Gruppe Ansichten auf Ansicht und dann auf SQL-Ansicht.

  3. Drücken Sie zum Kopieren des SQL-Codes STRG+C.

  4. Löschen Sie das Semikolon am Ende der FROM-Klausel, und drücken Sie dann die EINGABETASTE.

  5. Geben Sie UNIONein, und drücken Sie dann die EINGABETASTE.

    Hinweis : Verwenden Sie in Verbindung mit einer Union-Abfrage zur Durchführung einer vollen äußeren Verknüpfung nicht das Schlüsselwort ALL.

  6. Drücken Sie STRG+V, um den in Schritt 3 kopierten SQL-Code einzufügen.

  7. Ändern Sie in dem eingefügten Code LEFT JOIN in RIGHT JOIN.

  8. Löschen Sie das Semikolon am Ende der zweiten FROM-Klausel, und drücken Sie dann die EINGABETASTE.

  9. Fügen Sie eine WHERE-Klausel hinzu, mit der angegeben wird, dass der Wert des Verknüpfungsfelds in der ersten Tabelle, die in der FROM-Klausel aufgeführt wird (der linken Tabelle), NULL ist.

    Wenn die FROM-Klausel beispielsweise wie folgt lautet:

    FROM Products RIGHT JOIN [Order Details] 
    ON Products.ID = [Order Details].[Product ID]

    fügen Sie die folgende WHERE-Klausel hinzu:

    WHERE Products.ID IS NULL

  10. Geben Sie am Ende der WHERE-Klausel ein Semikolon (;) ein, um das Ende der Union-Abfrage anzugeben.

  11. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.
    Die Ergebnisse der Union-Abfrage werden in der Datenblattansicht angezeigt.

Weitere Informationen finden Sie unter Verknüpfen von Datenquellen in einer Abfrage.

Seitenanfang

Anforderungen und SQL-Syntax für eine Union-Abfrage

Einige Anforderungen für eine Union-Abfrage

  • Die Auswahlabfragen, die Sie in einer Union-Abfrage kombinieren, müssen über die gleiche Anzahl von Ausgabefeldern verfügen, und die Ausgabefelder müssen die gleiche Reihenfolge sowie die gleichen oder kompatible Datentypen aufweisen. Beim Ausführen einer Union-Abfrage werden die Daten aus jedem Satz einander entsprechender Felder in einem Ausgabefeld kombiniert, sodass die Ausgabe der Abfrage über die gleiche Anzahl von Feldern wie jede der SELECT-Anweisungen verfügt.

    Hinweis : Zum Zweck einer Union-Abfrage sind die Datentypen "Zahl" und "Text" kompatibel.

  • Eine Union-Abfrage ist SQL-spezifisch und muss daher direkt in SQL geschrieben werden. Wechseln Sie zur SQL-Ansicht, um SQL-spezifischer Abfragen wie Union-Abfragen zu schreiben.

SQL-Syntax einer Union-Abfrage

In einer Union-Abfrage umfasst jede Auswahlabfrage (auch SELECT-Anweisung genannt) die folgenden Klauseln:

Klausel

Enthält eine Liste mit...

SELECT

Feldern, die Daten enthalten, die abgerufen werden sollen.

FROM

Tabellen, die die betreffenden Felder enthalten.

WHERE (optional)

Kriterien für die betreffenden Felder.

Die SELECT-Anweisungen werden mit dem Schlüsselwort UNION kombiniert.

Die grundlegende SQL-Syntax für eine Union-Abfrage sieht wie folgt aus:

SELECT field_1[, field_2,…]
FROM table_1[, table_2,…]
UNION [ALL]
SELECT field_a[, field_b,...]
FROM table_a[, table_b,…];

Eine Datenbank enthält beispielsweise eine Tabelle mit Namen Artikel und eine weitere Tabelle mit Namen Dienstleistungen. Beide Tabellen enthalten Felder, die den Namen des Artikels oder der Dienstleistung (Name), den Preis (Preis) sowie die Verfügbarkeit von Gewährleistung oder Garantie (Gewährleistung_verfügbar) umfassen. Darüber hinaus gibt es ein Feld, das angibt, ob Sie das Produkt oder die Dienstleistung exklusiv anbieten (exklusives_Angebot). Obwohl in der Tabelle Artikel Informationen zur Gewährleistung und in der Tabelle Dienstleistungen Informationen zur Garantie gespeichert sind, sind die Daten im Grunde genommen die gleichen (ob für ein bestimmtes Produkt oder für einen Service eine Qualitätszusage gegeben wird). Sie können nun eine Union-Abfrage wie die Folgende verwenden, um diese vier Felder aus den beiden Tabellen zu kombinieren:

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services;

Wir wollen das vorstehende Syntaxbeispiel nun Zeile für Zeile durchgehen:

Syntax

Erklärung

Zusätzliche Informationen

SELECT Name, Preis, Gewährleistung_verfügbar, exklusives_Angebot

Erste SELECT-Klausel

Auf SELECT folgt eine Liste mit Bezeichnern, mit denen Felder angegeben werden, aus denen Daten abgerufen werden sollen.

In einer SELECT-Klausel muss mindestens ein Feld angegeben werden.

Die vorliegende SELECT-Klausel umfasst die Feldbezeichner Name, Preis, Gewährleistung_verfügbar und exklusives_Angebot.

FROM Artikel

Erste FROM-Klausel

Eine FROM-Klausel folgt auf eine SELECT-Klausel, und gemeinsam bilden diese beiden Klauseln die grundlegende SELECT-Anweisung.

Auf FROM folgt eine Liste mit Bezeichnern, die angeben, in welchen Tabellen die Felder enthalten sind, die in der SELECT-Klausel aufgeführt sind.

In einer FROM-Klausel muss immer eine Tabelle angegeben werden.

In der vorliegenden FROM-Klausel wird der Tabellenbezeichner Artikel verwendet.

UNION ALL

Das Schlüsselwort UNION und das optionale Schlüsselwort ALL

Die Ergebnisse der SELECT-Anweisung, die dem Schlüsselwort UNION vorausgeht, werden mit den Ergebnissen der SELECT-Anweisung kombiniert, die auf UNION folgt.

Bei Verwendung des Schlüsselworts ALL werden doppelt vorhandene Zeilen nicht aus den Ergebnissen der Union-Abfrage entfernt.

Durch das Schlüsselwort ALL kann die Abfrage schneller ausgeführt werden, da Access nicht prüfen muss, ob Zeilen doppelt vorhanden sind.

Verwenden Sie das Schlüsselwort ALL, wenn eine der folgenden Bedingungen zutrifft:

  • Sie sind sicher, dass mit der Auswahlabfrage keine doppelt vorhandenen Zeilen zurückgegeben werden.

  • Es ist für Sie unerheblich, ob das Abfrageergebnis doppelte Zeile enthält.

  • Sie möchten die doppelt vorhandenen Zeilen anzeigen.

SELECT Name, Preis, Garantie_verfügbar, exklusives_Angebot

Zweite SELECT-Klausel

Einige Regeln:

  • Die zweite SELECT-Klausel muss dieselbe Anzahl von Feldern aufweisen wie die erste SELECT-Klausel.

  • Felder mit gleichen Daten müssen in der Klausel in der gleichen Reihenfolge auftreten.

  • Felder mit gleichen Daten müssen den gleichen oder einen kompatiblen Datentyp aufweisen.

Hinweis : Die Namen der Felder in der Ausgabe einer Union-Abfrage stammen aus der ersten SELECT-Klausel. Im vorliegenden Beispiel werden die Daten aus den Feldern Gewährleistung_verfügbar und Garantie_verfügbar in der Abfrageausgabe unter dem Namen Gewährleistung_verfügbar zusammengefasst.

FROM Dienstleistungen

Zweite FROM-Klausel

In den FROM-Klauseln einer Union-Abfrage gibt es keine Beschränkungen im Hinblick auf die angegebenen Tabellen. Sie können eine Union-Abfrage erstellen, in der in jeder FROM-Klausel die gleichen Tabellen verwendet werden. In den FROM-Klauseln kann auch jeweils eine unterschiedliche Anzahl von Tabellen angegeben werden. Im vorliegenden Beispiel weisen die FROM-Klauseln nur jeweils eine Tabelle auf.

Seitenanfang

Hinweis : Haftungsausschluss für maschinelle Übersetzungen: Dieser Artikel wurde mithilfe eines Computersystems und ohne jegliche Bearbeitung durch Personen übersetzt. Microsoft bietet solche maschinellen Übersetzungen als Hilfestellung für Benutzer ohne Englischkenntnisse an, damit Sie von den Informationen zu Produkten, Diensten und Technologien von Microsoft profitieren können. Da es sich bei diesem Artikel um eine maschinelle Übersetzung handelt, enthält er möglicherweise Fehler in Bezug auf (Fach-)Terminologie, Syntax und/oder Grammatik.

Teilen Facebook Facebook Twitter Twitter E-Mail E-Mail

War diese Information hilfreich?

Sehr gut. Noch anderes Feedback?

Was können wir verbessern?

Vielen Dank für Ihr Feedback!

×