Die meisten SQL-Abfragen verwenden eine einzelne Anweisung, die Daten aus einer oder mehreren Tabellen zurückgibt. Mit SQL können Sie außerdem mehrere separate Abfragen gleichzeitig ausführen und das Ergebnis als einen einzelnen Datensatz anzeigen. Solche kombinierten Abfragen werden üblicherweise als Joins oder zusammengesetzte Abfragen bezeichnet.
SQL-Abfragen werden mit dem Operator UNION kombiniert. Dazu müssen Sie jede Anfrage mit SELECT angeben und das Schlüsselwort UNION dazwischen platzieren. Es gibt keine Begrenzung für die Anzahl der Verwendungen des Operators UNION in einer allgemeinen Abfrage. Im vorherigen Abschnitt haben wir festgestellt, dass MS Access nicht in der Lage ist, eine vollständige äußere Union zu erstellen. Jetzt werden wir sehen, wie dies mit dem Operator UNION erreicht werden kann.
Run SQLSELECT *
FROM Sumproduct
LEFT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
UNION
SELECT *
FROM Sumproduct
RIGHT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
Wir sehen, dass die Abfrage sowohl alle Spalten der ersten als auch der zweiten Tabelle anzeigte, unabhängig davon, ob alle Datensätze Entsprechungen in einer anderen Tabelle haben.
Es ist auch erwähnenswert, dass wir in vielen Fällen anstelle von UNION die WHERE-Klausel mit vielen Bedingungen verwenden und ein ähnliches Ergebnis erzielen können. Durch UNION sehen die Datensätze jedoch prägnanter und klarer aus.
Auch beim Schreiben kombinierter Abfragen müssen bestimmte Regeln beachtet werden:
Eine Abfrage mit UNION entfernt automatisch alle doppelten Zeilen aus der Abfrageergebnismenge (mit anderen Worten, verhält sich wie eine WHERE-Klausel mit mehreren Bedingungen in einer einzelnen SELECT-Anweisung). Dies ist das Standardverhalten des UNION-Operators, aber wir können es ändern, wenn wir möchten. Dafür sollten wir den Operator UNION ALL anstelle von UNION verwenden.
Die Ergebnisse der SELECT-Anweisung werden mit der ORDER BY-Anweisung sortiert. Beim Kombinieren von Abfragen mit UNION kann nur eine ORDER BY-Klausel verwendet werden und diese muss in der letzten SELECT-Anweisung platziert werden. Tatsächlich macht es in der Praxis wenig Sinn, einen Teil der Ergebnisse in einer Reihenfolge und den anderen Teil in einer anderen zu sortieren. Daher sind mehrere Sätze ORDER BY nicht zulässig.