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

Helfe beim Thema Kombinieren mehrerer Abfragen in einem einzigen Ergebnis mithilfe einer Union-Abfrage in Microsoft Access Tutorials um das Problem gemeinsam zu lösen; Kombinieren mehrerer Abfragen in einem einzigen Ergebnis mithilfe einer Union-Abfrage Access für Microsoft 365 Access 2019 Access... Dieses Thema im Forum "Microsoft Access Tutorials" wurde erstellt von Tutorials, 1. Januar 2020.

  1. Tutorials
    Tutorials Neuer User

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


    Kombinieren mehrerer Abfragen in einem einzigen Ergebnis mithilfe einer Union-Abfrage
    Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Mehr... Weniger Manchmal möchten Sie vielleicht die Datensätze aus einer einzigen Tabelle oder Abfrage mit Datensätzen aus einer oder mehreren Tabellen auflisten, um eine einzige Gruppe von Datensätzen zu bilden – eine Liste mit allen Datensätzen aus zwei oder mehr Tabellen. Dies ist der Zweck einer Union-Abfrage in Access.

    Um Union-Abfragen effektiv zu verstehen, sollten Sie sich zuerst mit dem Entwerfen von einfachen Auswahlabfragen in Access vertraut machen. Wenn Sie mehr zum Entwerfen von Auswahlabfragen erfahren möchten, lesen Sie Erstellen einer einfachen Auswahlabfrage.

    Hinweis: Der Inhalt dieses Artikels gilt lediglich für Access-Desktopdatenbanken. In Access Web-Datenbanken oder Access Web Apps können Sie keine Union-Abfrage erstellen oder verwenden.

    Untersuchung eines Arbeitsbeispiels für eine Union-Abfrage
    Wenn Sie nie zuvor eine Union-Abfrage erstellt haben, finden Sie es vielleicht hilfreich, zunächst ein Arbeitsbeispiel in der Access-Vorlage für die Northwind-Datenbank zu untersuchen. Sie können nach der Northwind-Beispielvorlage auf der Access-Seite "Erste Schritte" suchen, indem Sie auf Datei > Neu klicken, oder Sie können eine Kopie direkt von diesem Speicherort herunterladen: Northwind-Beispielvorlage.

    Nachdem Access die Northwind-Datenbank geöffnet hat, schließen Sie das zuerst angezeigte Dialogfeldformular für die Anmeldung, und erweitern Sie den Navigationsbereich. Klicken Sie auf den oberen Rand des Navigationsbereichs, und wählen Sie Objekttyp aus, um alle Datenbankobjekte nach deren Typ zu organisieren. Erweitern Sie als Nächstes die Gruppe Abfragen. Dann sehen Sie die Abfrage Produktbuchungen.

    Union-Abfragen lassen sich von anderen Abfrageobjekten problemlos unterscheiden. Sie weisen nämlich ein besonderes Symbol auf, das zwei ineinander greifenden Kreisen ähnelt, die eine vereinigte Gruppe aus zwei Gruppen darstellen:


    Kombinieren mehrerer Abfragen in einem einzigen Ergebnis mithilfe einer Union-Abfrage 92fa231f-acc3-457a-9a34-930f82709b2a.png
    Im Gegensatz zu normalen Auswahl- und Aktionsabfragen sind Tabellen in einer Union-Abfrage nicht verwandt. Dies bedeutet, dass der grafische Abfrage-Designer von Access nicht zum Erstellen oder Bearbeiten von Union-Abfragen verwendet werden kann. Dies werden Sie feststellen, wenn Sie eine Union-Abfrage über den Navigationsbereich öffnen. Dann wird sie von Access in der Datenblattansicht geöffnet und angezeigt. Auf der Registerkarte Start sehen Sie unter dem Befehl Ansichten, dass die Entwurfsansicht beim Arbeiten mit Union-Abfragen nicht zur Verfügung steht. In diesem Fall können Sie nur zwischen Datenblattansicht und SQL-Ansicht wechseln.

    In Fortsetzung Ihrer Untersuchung dieses Beispiels für eine Union-Abfrage klicken Sie auf Start > Ansichten > SQL-Ansicht, um die SQL-Ansicht zur Definition der Abfrage anzuzeigen. In dieser Abbildung haben wir in der SQL-Anweisung zusätzlichen Leerraum hinzugefügt, damit Sie die verschiedenen Bestandteile einer Union-Abfrage problemlos sehen können.


    Wir wollen jetzt die SQL-Syntax dieser Union-Abfrage aus der Northwind-Datenbank in allen Einzelheiten untersuchen:

    Der erste und dritte Teil dieser SQL-Anweisung besteht im Wesentlichen aus zwei Auswahlabfragen. Diese Abfragen rufen zwei verschiedene Gruppen von Datensätzen ab – eine aus der Tabelle Produktbestellungen und eine aus der Tabelle Produktkäufe.

    Der zweite Teil dieser SQL-Anweisung ist das Schlüsselwort UNION. Es informiert Access, dass in dieser Abfrage diese beiden Gruppen von Datensätzen kombiniert werden.

    Der letzte Teil dieser SQL-Anweisung bestimmt die Reihenfolge der kombinierten Datensätze mithilfe einer ORDER BY-Anweisung. In diesem Beispiel ordnet Access alle Datensätze nach dem Feld "Bestelldatum" in absteigender Reihenfolge.

    Hinweis: Union-Abfragen sind in Access immer schreibgeschützt; Sie können in der Datenblattansicht keine Werte ändern.

    Erstellen einer Union-Abfrage durch Erstellen und Kombinieren von Auswahlabfragen
    Obwohl Sie eine Union-Abfrage erstellen können, indem Sie die SQL-Syntax direkt in der SQL-Ansicht schreiben, finden Sie es möglicherweise einfacher, sie in Teilen mit Auswahlabfragen zusammenzustellen. Anschließend können Sie die SQL-Teile kopieren und in eine kombinierte Union-Abfrage einfügen.

    Wenn Sie das Lesen der Schritte überspringen und sich stattdessen ein Beispiel anschauen möchten, lesen Sie den nächsten Abschnitt Anschauen eines Beispiels für das Erstellen einer Union-Abfrage.

    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, das Sie einschließen möchten. Während Sie Felder auswählen, achten Sie darauf, dass Sie dieselbe Anzahl von Feldern in derselben Reihenfolge hinzufügen, in der Sie sie in den anderen Auswahlabfragen hinzufügen. Achten Sie besonders auf die Datentypen der Felder, und stellen Sie sicher, dass die Datentypen mit Feldern kompatibel sind, die sich in anderen zu kombinierenden Abfragen an derselben Position befinden. Wenn beispielsweise Ihre erste Auswahlabfrage fünf Felder aufweist, von denen das erste Feld Daten für Datum/Uhrzeit enthält, stellen Sie sicher, dass jede der anderen zu kombinierenden Auswahlabfragen ebenfalls fünf Felder aufweist, das erste Feld Daten für Datum/Uhrzeit enthält usw.
    5. Optional können Sie Ihren Feldern Kriterien hinzufügen, indem Sie die entsprechenden Ausdrücke in der Zeile "Kriterien" des Feldrasters eingeben.
    6. Nachdem Sie alle 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.
    Nachdem Sie Ihre Auswahlabfragen erstellt haben, werden Sie sie als Nächstes kombinieren. In diesem Schritt erstellen Sie die Union-Abfrage durch Kopieren und Einfügen der SQL-Anweisungen.

    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 Fenster "Abfrageentwurf" aus und zeigt die Registerkarte für das SQL-Ansichtsobjekt an. Zu diesem Zeitpunkt ist die Registerkarte für das SQL-Ansichtsobjekt leer.
    4. Klicken Sie auf die Registerkarte für die erste Auswahlabfrage, die Sie in der Union-Abfrage kombinieren möchten.
    5. Klicken Sie auf der Registerkarte Start auf Ansicht > SQL-Ansicht.
    6. Kopieren Sie die SQL-Anweisung für die Auswahlabfrage. Klicken Sie auf die Registerkarte für die Union-Abfrage, mit deren Erstellung Sie weiter oben begonnen haben.
    7. Fügen Sie die SQL-Anweisung für die Auswahlabfrage in die Registerkarte für das SQL-Ansichtsobjekt der Union-Abfrage ein.
    8. Löschen Sie das Semikolon (;) am Ende der SQL-Anweisung der Auswahlabfrage.
    9. Drücken Sie die EINGABETASTE, um den Cursor eine Zeile nach unten zu verschieben, und geben Sie in die neue Zeile "UNION" ein.
    10. Klicken Sie für die nächste Auswahlabfrage, die Sie mit der Union-Abfrage kombinieren möchten, auf die Registerkarte.
    11. Wiederholen Sie die Schritte 5 bis 10 so oft, bis Sie sämtliche SQL-Anweisungen für die Auswahlabfragen kopiert und in das Fenster mit der SQL-Ansicht der Union-Abfrage eingefügt haben. Löschen Sie nicht das Semikolon, oder geben Sie nach der SQL-Anweisung für die letzte Auswahlabfrage nichts ein.
    12. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.
    Die Ergebnisse Ihrer UNION-Abfrage werden in der Datenblattansicht angezeigt.

    Anschauen eines Beispiels für das Erstellen einer Union-Abfrage
    Hier ist ein Beispiel, das Sie in der Northwind-Beispieldatenbank neu erstellen können. Diese Union-Abfrage sammelt die Namen von Personen aus der Tabelle Kunden und kombiniert sie mit den Namen von Personen aus der Tabelle Lieferanten. Wenn Sie das nachvollziehen möchten, arbeiten Sie diese Schritte in Ihrer Kopie der Northwind-Beispieldatenbank durch.


    Hier sind die erforderlichen Schritte zum Erstellen dieses Beispiels:

    1. Erstellen Sie in den Tabellen "Kunden" bzw. "Lieferanten" als Datenquellen zwei Auswahlabfragen namens "Abfrage1" und "Abfrage2". Verwenden Sie die Felder "Vorname" und "Nachname" als Anzeigewerte.
    2. Erstellen Sie eine neue Abfrage namens "Abfrage3" – zunächst ohne Datenquelle. Klicken Sie dann auf der Registerkarte Entwurf auf den Befehl Union, um aus dieser Abfrage eine Union-Abfrage zu machen.
    3. Kopieren Sie die SQL-Anweisungen aus Abfrage1 und Abfrage2, und fügen Sie sie in Abfrage3 ein. Vergessen Sie nicht, das zusätzliche Semikolon zu entfernen und das Schlüsselwort UNION hinzuzufügen. Anschließend können Sie Ihre Ergebnisse in der Datenblattansicht überprüfen.
    4. Fügen Sie in einer der Abfragen eine Ordering-Klausel hinzu, und fügen Sie die ORDER BY-Anweisung in die SQL-Ansicht der Union-Abfrage ein. Beachten Sie: In Abfrage3, der Union-Abfrage, werden vor dem Anfügen der Ordering-Klausel zuerst die Semikolons entfernt. Dann wird der Tabellenname aus den Feldnamen entfernt.
    5. Die endgültige SQL-Anweisung, in der die Namen für dieses Beispiel einer Union-Abfrage kombiniert und sortiert werden, sieht so aus:

    Wenn Sie mit dem Schreiben von SQL-Syntax sehr vertraut sind, können Sie selbstverständlich Ihre eigene SQL-Anweisung für die Union-Abfrage direkt in der SQL-Ansicht schreiben. Möglicherweise finden Sie es aber hilfreich, dem Ansatz "Kopieren und Einfügen von SQL aus anderen Abfrageobjekten" zu folgen. Jede Abfrage kann viel komplizierter als die hier verwendeten Beispiele für einfache Auswahlabfragen sein. Es kann für Sie vorteilhaft sein, jede Abfrage sorgfältig zu erstellen und zu testen, bevor Sie sie in der Union-Abfrage kombinieren. Wenn die Ausführung Ihrer Union-Abfrage fehlschlägt, können Sie jede Abfrage einzeln so lange anpassen, bis sie gelingt, und dann die Union-Abfrage mit der korrigierten Syntax erneut erstellen.

    Schauen Sie sich die restlichen Abschnitte dieses Artikels an, um weitere Tipps und Tricks zur Verwendung von Union-Abfragen kennenzulernen.

    Kombinieren von drei oder mehr Tabellen oder Abfragen in einer Union-Abfrage
    Im Beispiel aus dem vorstehenden Abschnitt zur Verwendung der Northwind-Datenbank werden Daten aus nur zwei Tabellen kombiniert. Sie können jedoch drei oder mehr Tabellen ganz einfach in einer Union-Abfrage kombinieren. So könnten Sie beispielsweise, aufbauend auf dem vorherigen Beispiel, auch die Namen der Mitarbeiter in die Abfrageausgabe einbeziehen. Zur Erledigung dieser Aufgabe können Sie eine dritte Abfrage hinzufügen und mit einem zusätzlichen UNION-Schlüsselwort wie dem folgenden mit der vorherigen SQL-Anweisung kombinieren:

    Wenn Sie das Ergebnis in der Datenblattansicht anzeigen, werden alle Mitarbeiter mit dem Namen der Beispielfirma aufgelistet. Das ist wahrscheinlich wenig hilfreich. Wenn dieses Feld angeben soll, ob eine Person ein interner Mitarbeiter oder aber der Mitarbeiter eines Lieferanten oder eines Kunden ist, können Sie statt des Firmennamens einen festen Wert einbeziehen. Dann würde die SQL-Anweisung so aussehen:

    Und so wird das Ergebnis in der Datenblattansicht angezeigt. Access zeigt diese fünf Beispieldatensätze an:

    Beschäftigung

    Nachname

    Vorname

    Intern

    Faber

    Giselle

    Intern

    Becker

    Laura

    Lieferant

    Gasper

    Niklas

    Kunde

    Gunther

    Killian

    Kunde

    Graf

    Kasper

    Die vorstehende Abfrage kann sogar noch weiter reduziert werden, weil Access in einer Union-Abfrage nur die Namen der Ausgabefelder aus der ersten Abfrage einliest. Hier sehen Sie, dass wir die Ausgabe aus den Abschnitten der zweiten und dritten Abfrage entfernt haben:

    Filtern in Union-Abfragen
    In einer Union-Abfrage von Access ist Sortieren nur einmal zulässig, doch jede Abfrage kann individuell gefiltert werden. Aufbauend auf der Union-Abfrage im vorherigen Abschnitt, ist hier ein Beispiel, in dem jede Abfrage durch Hinzufügen einer WHERE-Klausel gefiltert wurde.

    Wechseln Sie zur Datenblattansicht. Dort werden ähnliche Ergebnisse wie diese angezeigt:

    Beschäftigung

    Nachname

    Vorname

    Lieferant

    Endemann

    Elke

    Intern

    Faber

    Giselle

    Kunde

    Hembrock

    Detlef

    Intern

    Heinrich

    Jule

    Lieferant

    Hoffmann

    Jana

    Kunde

    Möller

    Gabriel

    Lieferant

    Sachweh

    Jan

    Lieferant

    Schmitt

    Kai

    Intern

    Tropschuh

    Maximilian

    Lieferant

    Wagner

    Lina

    Intern

    Wilske

    Adrian

    Mischen von Datentypen
    Wenn die Abfragen zur Union-Abfrage sehr unterschiedlich sind, kommt es vielleicht zu einer Situation, bei der in einem Ausgabefeld Daten verschiedener Typen kombiniert werden müssen. In diesem Fall gibt die Union-Abfrage die Ergebnisse meistens als Textdatentyp zurück, weil dieser Datentyp sowohl Text als auch Zahlen enthalten kann.

    Um zu veranschaulichen, wie das funktioniert, verwenden wir die Union-Abfrage Produktbuchungen in der Northwind-Beispieldatenbank. Öffnen Sie diese Datenbank. Dann wird die Abfrage "Produktbuchungen" in der Datenblattansicht geöffnet. Die letzten zehn Datensätze sollten ähnlich wie diese Ausgabe sein:

    Produkt-ID

    Bestelldatum

    Firmenname

    Buchung

    Menge

    77

    22.01.2006

    Lieferant B

    Einkauf

    60

    80

    22.01.2006

    Lieferant D

    Einkauf

    75

    81

    22.01.2006

    Lieferant A

    Einkauf

    125

    81

    22.01.2006

    Lieferant A

    Einkauf

    200

    7

    20.01.2006

    Firma D

    Verkauf

    10

    51

    20.01.2006

    Firma D

    Verkauf

    10

    80

    20.01.2006

    Firma D

    Verkauf

    10

    34

    15.01.2006

    Firma AA

    Verkauf

    100

    80

    15.01.2006

    Firma AA

    Verkauf

    30

    Angenommen, Sie möchten das Feld "Menge" in zwei aufteilen – "Kaufen" und "Verkaufen". Außerdem angenommen, Sie möchten für das Feld ohne Wert einen festen Nullwert haben. Dann sieht die Union-Abfrage für die SQL-Anweisung so aus:

    Wenn Sie zur Datenblattansicht wechseln, werden die letzten zehn Datensätze jetzt so angezeigt:

    Produkt-ID

    Bestelldatum

    Firmenname

    Buchung

    Kaufen

    Verkaufen

    74

    22.01.2006

    Lieferant B

    Einkauf

    20

    0

    77

    22.01.2006

    Lieferant B

    Einkauf

    60

    0

    80

    22.01.2006

    Lieferant D

    Einkauf

    75

    0

    81

    22.01.2006

    Lieferant A

    Einkauf

    125

    0

    81

    22.01.2006

    Lieferant A

    Einkauf

    200

    0

    7

    20.01.2006

    Firma D

    Verkauf

    0

    10

    51

    20.01.2006

    Firma D

    Verkauf

    0

    10

    80

    20.01.2006

    Firma D

    Verkauf

    0

    10

    34

    15.01.2006

    Firma AA

    Verkauf

    0

    100

    80

    15.01.2006

    Firma AA

    Verkauf

    0

    30

    Und was wäre in Fortsetzung dieses Beispiels, wenn die Felder mit "0" (null) leer sein sollen? Sie können die SQL-Anweisung so ändern, dass statt "0" kein Wert angezeigt wird, indem Sie das Schlüsselwort "Null" wie hier hinzufügen:

    Wie Sie aber vielleicht beim Wechseln zur Datenblattansicht beobachtet haben, gibt es nun ein unerwartetes Ergebnis. In der Spalte "Kaufen" wurde der Inhalt jedes Felds gelöscht:

    Produkt-ID

    Bestelldatum

    Firmenname

    Buchung

    Kaufen

    Verkaufen

    74

    22.01.2006

    Lieferant B

    Einkauf

     

     

    77

    22.01.2006

    Lieferant B

    Einkauf

     

     

    80

    22.01.2006

    Lieferant D

    Einkauf

     

     

    81

    22.01.2006

    Lieferant A

    Einkauf

     

     

    81

    22.01.2006

    Lieferant A

    Einkauf

     

     

    7

    20.01.2006

    Firma D

    Verkauf

     

    10

    51

    20.01.2006

    Firma D

    Verkauf

     

    10

    80

    20.01.2006

    Firma D

    Verkauf

     

    10

    34

    15.01.2006

    Firma AA

    Verkauf

     

    100

    80

    15.01.2006

    Firma AA

    Verkauf

     

    30

    Der Grund: Access ermittelt die Datentypen der Felder aus der ersten Abfrage. In diesem Beispiel ist "Null" keine Zahl.

    Was geschieht also, wenn Sie versuchen, für den leeren Wert von Feldern eine leere Zeichenfolge einzufügen? Die SQL-Anweisung für diesen Versuch könnte etwa so aussehen:

    Wenn Sie zur Datenblattansicht wechseln, sehen Sie, dass Access die Werte für "Kaufen" abruft, diese Werte aber in Text konvertiert hat. Sie wissen, dass es sich hier um Textwerte handelt, weil diese in der Datenblattansicht linksbündig ausgerichtet sind. Weil die leere Zeichenfolge in der ersten Abfrage keine Zahl ist, werden diese Ergebnisse angezeigt. Außerdem werden Sie feststellen, dass die Werte für "Verkaufen" ebenfalls in Text konvertiert wurden, weil die Datensätze für "Einkauf" eine leere Zeichenfolge enthalten.

    Produkt-ID

    Bestelldatum

    Firmenname

    Buchung

    Kaufen

    Verkaufen

    74

    22.01.2006

    Lieferant B

    Einkauf

    20

     

    77

    22.01.2006

    Lieferant B

    Einkauf

    60

     

    80

    22.01.2006

    Lieferant D

    Einkauf

    75

     

    81

    22.01.2006

    Lieferant A

    Einkauf

    125

     

    81

    22.01.2006

    Lieferant A

    Einkauf

    200

     

    7

    20.01.2006

    Firma D

    Verkauf

     

    10

    51

    20.01.2006

    Firma D

    Verkauf

     

    10

    80

    20.01.2006

    Firma D

    Verkauf

     

    10

    34

    15.01.2006

    Firma AA

    Verkauf

     

    100

    80

    15.01.2006

    Firma AA

    Verkauf

     

    30

    Wie können Sie also dieses Puzzle lösen?

    Eine Lösung besteht darin zu erzwingen, dass die Abfrage als Feldwert eine Zahl erwartet. Dies lässt sich mit folgendem Ausdruck erzielen:

    Die zu überprüfende Bedingung, False, wird niemals True sein. Folglich gibt der Ausdruck immer Null zurück. Doch Access wertet beide Ausgabeoptionen weiterhin aus und entscheidet, ob die Ausgabe numerisch oder "Null" sein soll.

    Diesen Ausdruck können wir in unserem Arbeitsbeispiel folgendermaßen verwenden:

    Beachten Sie, dass die zweite Abfrage nicht geändert werden muss.

    Wenn Sie zur Datenblattansicht wechseln, wird jetzt das gewünschte Ergebnis angezeigt:

    Produkt-ID

    Bestelldatum

    Firmenname

    Buchung

    Kaufen

    Verkaufen

    74

    22.01.2006

    Lieferant B

    Einkauf

    20

     

    77

    22.01.2006

    Lieferant B

    Einkauf

    60

     

    80

    22.01.2006

    Lieferant D

    Einkauf

    75

     

    81

    22.01.2006

    Lieferant A

    Einkauf

    125

     

    81

    22.01.2006

    Lieferant A

    Einkauf

    200

     

    7

    20.01.2006

    Firma D

    Verkauf

     

    10

    51

    20.01.2006

    Firma D

    Verkauf

     

    10

    80

    20.01.2006

    Firma D

    Verkauf

     

    10

    34

    15.01.2006

    Firma AA

    Verkauf

     

    100

    80

    15.01.2006

    Firma AA

    Verkauf

     

    30

    Als alternative Methode zur Erzielung desselben Ergebnisses können Sie die Abfragen in der Union-Abfrage bei noch einer weiteren Abfrage voranstellen:

    Access gibt für jedes Feld feste Werte des von Ihnen definierten Datentyps zurück. Natürlich möchten Sie nicht, dass die Ausgabe dieser Abfrage die Ergebnisse beeinflusst. Dies können Sie verhindern, indem Sie in "False" eine WHERE-Klausel einbeziehen:

    Dies ist ein kleiner Trick, weil das Ergebnis immer "false" lautet und die Abfrage dann nichts zurückgibt. Wenn diese Anweisung mit der vorhandenen SQL-Anweisung kombiniert wird, sieht die abgeschlossene Anweisung so aus:

    Hinweis: Die kombinierte Abfrage in diesem Beispiel, bei dem die Northwind-Datenbank verwendet wird, gibt 100 Datensätze zurück, während die beiden einzelnen Abfragen 58 und 43 Datensätze für insgesamt 101 Datensätze zurückgeben. Der Grund für diese Abweichung: Zwei Datensätze sind nicht eindeutig. Anleitungen, wie Sie dieses Szenario mithilfe von UNION ALL lösen können, finden Sie im Abschnitt Arbeiten mit eindeutigen Datensätzen in Union-Abfragen unter Verwendung von UNION ALL.

    Hinzufügen von Summen in einer Union-Abfrage
    Ein Sonderfall für eine Union-Abfrage ist das Kombinieren einer Gruppe von Datensätzen mit einem einzigen Datensatz, der die Summe aus einem oder mehreren Feldern enthält.

    Hier ist ein weiteres Beispiel, das Sie in der Northwind-Beispieldatenbank erstellen können, um zu veranschaulichen, wie Sie in einer Union-Abfrage eine Summe erhalten.

    1. Erstellen Sie eine neue einfache Abfrage, um den Einkauf von Bier ("Produkt-ID=34" in der Northwind-Datenbank) anzuzeigen, und verwenden Sie dazu folgende SQL-Syntax:
    2. Wechseln Sie zur Datenblattansicht. Dort sollten vier Einkäufe angezeigt werden:
    3. [parsehtml]<table id="tblID0EAEBADAAA"> <tbody> <tr> <td> <p> <b>Empfangsdatum</b> </p> </td> <td> <p> <b>Menge</b> </p> </td> </tr> <tr> <td> <p>22.01.2006</p> </td> <td> <p>100</p> </td> </tr> <tr> <td> <p>22.01.2006</p> </td> <td> <p>60</p> </td> </tr> <tr> <td> <p>04.04.2006</p> </td> <td> <p>50</p> </td> </tr> <tr> <td> <p>05.04.2006</p> </td> <td> <p>300</p> </td> </tr> </tbody> </table>[/parsehtml] Um die Summe zu erhalten, erstellen Sie mit der folgenden SQL-Anweisung eine einfache Aggregatabfrage:
    4. Wechseln Sie zur Datenblattansicht. Dort sollte nur ein einziger Datensatz angezeigt werden:
    5. [parsehtml]<table id="tblID0EACBADAAA"> <tbody> <tr> <td> <p> <b>MaxVonEmpfangsdatum</b> </p> </td> <td> <p> <b>SummeVonMenge</b> </p> </td> </tr> <tr> <td> <p>05.04.2006</p> </td> <td> <p>510</p> </td> </tr> </tbody> </table>[/parsehtml] Kombinieren Sie diese beiden Abfragen in einer Union-Abfrage, um den Datensatz mit der Gesamtmenge an die Einkaufsdatensätze anzufügen:
    6. Wechseln Sie zur Datenblattansicht. Dort sollten die vier Einkäufe mit der Summe für jeden Einkauf angezeigt werden, gefolgt von einem Datensatz mit der Summe der Menge:

      [parsehtml]<table id="tblID0EAABADAAA"> <tbody> <tr> <td> <p> <b>Empfangsdatum</b> </p> </td> <td> <p> <b>Menge</b> </p> </td> </tr> <tr> <td> <p>22.01.2006</p> </td> <td> <p>60</p> </td> </tr> <tr> <td> <p>22.01.2006</p> </td> <td> <p>100</p> </td> </tr> <tr> <td> <p>04.04.2006</p> </td> <td> <p>50</p> </td> </tr> <tr> <td> <p>05.04.2006</p> </td> <td> <p>300</p> </td> </tr> <tr> <td> <p>05.04.2006</p> </td> <td> <p>510</p> </td> </tr> </tbody> </table>[/parsehtml]
    Damit werden die Grundlagen des Hinzufügens von Summen zu einer Union-Abfrage abgedeckt. Möglicherweise möchten Sie außerdem in beide Abfragen feste Werte wie "Detail" und "Summe" einbeziehen, um den gesamten Datensatz von den anderen Datensätzen visuell zu trennen. Im Abschnitt Kombinieren von drei oder mehr Tabellen oder Abfragen in einer Union-Abfrage können Sie die Verwendung von festen Werten nachlesen.

    Arbeiten mit eindeutigen Datensätzen in Union-Abfragen unter Verwendung von UNION ALL
    Union-Abfragen in Access enthalten standardmäßig nur eindeutige Datensätze. Was ist aber, wenn Sie alle Datensätze einbeziehen möchten? Hier könnte ein weiteres Beispiel hilfreich sein.

    Im vorstehenden Abschnitt wurde gezeigt, wie Sie in einer Union-Abfrage eine Summe erstellen. Ändern Sie die SQL-Anweisung für diese Union-Abfrage, damit "Produkt-ID=48" einbezogen wird:

    Wechseln Sie zur Datenblattansicht. Dort sollte ein etwas irreführendes Ergebnis angezeigt werden:

    Empfangsdatum

    Menge

    22.01.2006

    100

    22.01.2006

    200

    Ein einziger Datensatz gibt natürlich die Menge insgesamt nicht zweimal zurück.

    Der Grund für die Anzeige dieses Ergebnisses: An einem einzigen Tag wurde dieselbe Menge Schokolade zweimal verkauft. Dies wurde in der Tabelle "Bestellungsdetails" erfasst. In diesem Ergebnis einer einfachen Auswahlabfrage werden beide Datensätze in der Northwind-Beispieldatenbank gezeigt:

    Auftrags-Nr.

    Product

    Quantity

    100

    Northwind Traders – Schokolade

    100

    92

    Northwind Traders – Schokolade

    100

    In der vorstehenden Union-Abfrage können Sie sehen, dass das Feld "Auftrags-Nr." nicht eingeschlossen ist und dass die beiden Felder keine zwei eindeutigen Datensätze bilden.

    Wenn Sie alle Datensätze einbeziehen möchten, verwenden Sie in Ihrer SQL-Anweisung UNION ALL statt UNION. Weil sich dies höchstwahrscheinlich auf die Sortierung der Ergebnisse auswirkt, möchten Sie vielleicht auch eine ORDER BY-Klausel zur Festlegung einer Sortierreihenfolge einbeziehen. Hier ist die geänderte SQL-Version des vorstehenden Beispiels:

    Wechseln Sie zur Datenblattansicht. Dort sollten alle Details zusätzlich zur Summe als letztem Datensatz angezeigt werden:

    Empfangsdatum

    Summe

    Menge

    22.01.2006

     

    100

    22.01.2006

     

    100

    22.01.2006

    Summe

    200

    Verwenden einer Union-Abfrage zum Filtern von Datensätzen in einem Formular über ein Kombinationsfeld-Steuerelement
    Eine Union-Abfrage wird in einem Formular häufig als Datensatzquelle für ein Kombinationsfeld-Steuerelement verwendet. Sie können über dieses Kombinationsfeld einen Wert auswählen, um die Datensätze des Formulars zu filtern. Beispielsweise können Sie die Datensätze von Mitarbeitern nach deren Ort filtern.

    Wenn Sie sehen möchten, wie das funktioniert, ist hier ein weiteres Beispiel, das Sie zur Veranschaulichung dieses Szenarios in der Northwind-Beispieldatenbank erstellen können.

    1. Erstellen Sie eine einfache Auswahlabfrage mit folgender SQL-Syntax:
    2. Wechseln Sie zur Datenblattansicht. Dort sollten die folgenden Ergebnisse angezeigt werden:
    3. [parsehtml]<table id="tblID0EADBABAAA"> <tbody> <tr> <td> <p> <b>Ort</b> </p> </td> <td> <p> <b>Filter</b> </p> </td> </tr> <tr> <td> <p>Stuttgart</p> </td> <td> <p>Stuttgart</p> </td> </tr> <tr> <td> <p>Baden-Baden</p> </td> <td> <p>Baden-Baden</p> </td> </tr> <tr> <td> <p>Regensburg</p> </td> <td> <p>Regensburg</p> </td> </tr> <tr> <td> <p>Köln</p> </td> <td> <p>Köln</p> </td> </tr> <tr> <td> <p>Stuttgart</p> </td> <td> <p>Stuttgart</p> </td> </tr> <tr> <td> <p>Regensburg</p> </td> <td> <p>Regensburg</p> </td> </tr> <tr> <td> <p>Stuttgart</p> </td> <td> <p>Stuttgart</p> </td> </tr> <tr> <td> <p>Regensburg</p> </td> <td> <p>Regensburg</p> </td> </tr> <tr> <td> <p>Stuttgart</p> </td> <td> <p>Stuttgart</p> </td> </tr> </tbody> </table>[/parsehtml] Wenn Sie sich diese Ergebnisse anschauen, werden möglicherweise nicht viele Werte angezeigt. Erweitern Sie die Abfrage, und transformieren Sie sie mithilfe der folgenden SQL-Anweisung in eine Union-Abfrage:
    4. Wechseln Sie zur Datenblattansicht. Dort sollten die folgenden Ergebnisse angezeigt werden:

      [parsehtml]<table id="tblID0ECBBABAAA"> <tbody> <tr> <td> <p> <b>Ort</b> </p> </td> <td> <p> <b>Filter</b> </p> </td> </tr> <tr> <td> <p><Alle></p> </td> <td> <p>*</p> </td> </tr> <tr> <td> <p>Baden-Baden</p> </td> <td> <p>Baden-Baden</p> </td> </tr> <tr> <td> <p>Köln</p> </td> <td> <p>Köln</p> </td> </tr> <tr> <td> <p>Regensburg</p> </td> <td> <p>Regensburg</p> </td> </tr> <tr> <td> <p>Stuttgart</p> </td> <td> <p>Stuttgart</p> </td> </tr> </tbody> </table>[/parsehtml] Access führt eine Vereinigung der weiter oben gezeigten neun Datensätze durch, mit festen Feldwerten für "<Alle>" und "*".

      Da diese Union-Klausel nicht UNION ALL enthält, gibt Access nur eindeutige Datensätze zurück. Dies bedeutet, dass jeder Ort nur einmal mit festen identischen Werten zurückgegeben wird.
    5. Sie verfügen jetzt über eine abgeschlossene Union-Abfrage, in der jeder Ortsname nur einmal angezeigt wird, zusammen mit einer Option, die alle Orte effektiv auswählt. Diese Abfrage können Sie nun als Datensatzquelle für ein Kombinationsfeld in einem Formular verwenden. Wenn Sie dieses spezifische Beispiel als Modell verwenden, könnten Sie in einem Formular ein Kombinationsfeld-Steuerelement erstellen, diese Abfrage als dessen Datensatzquelle festlegen, die Eigenschaft "Spaltenbreite" der Spalte "Filter" auf "0" (null) festlegen, um sie visuell auszublenden, und dann die Eigenschaft "Gebundene Spalte" auf "1" festlegen, um den Index für die zweite Spalte anzugeben. In der Eigenschaft "Filter" des Formulars selbst können Sie Code hinzufügen, beispielsweise den folgenden zum Aktivieren eines Formularfilters, wobei der Wert der im Kombinationsfeld-Steuerelement getroffenen Auswahl verwendet wird:

      Der Benutzer des Formulars kann dann die Datensätze darin auf einen bestimmten Ortsnamen filtern oder "<Alle>" auswählen, um alle Datensätze für alle Orte aufzulisten.
    Seitenanfang

    :)
     
    Tutorials, 1. Januar 2020
    #1
Thema:

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

Die Seite wird geladen...
  1. Kombinieren mehrerer Abfragen in einem einzigen Ergebnis mithilfe einer Union-Abfrage - Similar Threads - Kombinieren mehrerer Abfragen

  2. Kombinieren mehrerer Abfragen (Power Query)

    in Microsoft Excel Tutorials
    Kombinieren mehrerer Abfragen (Power Query): Kombinieren mehrerer Abfragen (Power Query) Excel für Microsoft 365 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Mehr... Weniger...
  3. Kombinieren von Daten aus mehreren Datenquellen (Power Query)

    in Microsoft Excel Tutorials
    Kombinieren von Daten aus mehreren Datenquellen (Power Query): Kombinieren von Daten aus mehreren Datenquellen (Power Query) Excel für Microsoft 365 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Mehr......
  4. Kombinieren von Texten aus mehreren Zellen in einer Zelle

    in Microsoft Excel Tutorials
    Kombinieren von Texten aus mehreren Zellen in einer Zelle: Kombinieren von Texten aus mehreren Zellen in einer Zelle Excel für Microsoft 365 Excel für Microsoft 365 für Mac Excel für das Web Excel 2019 Excel 2016...
  5. Kombinieren von Daten aus mehreren Blättern

    in Microsoft Excel Tutorials
    Kombinieren von Daten aus mehreren Blättern: Kombinieren von Daten aus mehreren Blättern Excel für Microsoft 365 für Mac Excel 2019 für Mac Excel 2016 für Mac Excel für Mac 2011 Mehr... Weniger...
  6. Kombinieren von mehrerer Dokumente in einem einzelnen Inhaltsverzeichnis

    in Microsoft Word Hilfe
    Kombinieren von mehrerer Dokumente in einem einzelnen Inhaltsverzeichnis: Ich muss ein externes Inhaltsverzeichnis in einem neuen Word Dokument erstellen von verschiedenen Word Dokumenten. Die Dokumente zusammen zu führen ist leider keine Option da die Datei zu groß...
  7. 2 oder mehrere Dateien kombinieren (Anhand Liste manche Zeilen ausschließen)

    in Microsoft Excel Hilfe
    2 oder mehrere Dateien kombinieren (Anhand Liste manche Zeilen ausschließen): Hallo zusammen, ich habe 2 Exceldateien in Tabellenform, die ich gerne analysieren und auswerten möchte. Beide enthalten ca 70000 Zeilen und bis zu 20 Spalten. Bevor ich die Analyse starte...
  8. Mehre Zeilen anhand einer Bedingung kombinieren

    in Microsoft Excel Hilfe
    Mehre Zeilen anhand einer Bedingung kombinieren: Hallo Forum, Folgendes: Ich hab eine Excel-Datei bei der in Spalte A mehere IDs (zb: A2 ID1, A3 ID1, A4 ID1; A5 ID2, A5 ID3 und so weiter) befinden. In Spalte B, C, D sind jeweils...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden