5.4 Vereinigungsabfrage – UNION
UNION
wird benutzt um das Ergebnis von zwei oder mehreren Abfragen miteinander
zu kombinieren, so dass eine einzelne Ergebnistabelle ausgegeben wird. Die Ergebnisse werden
hintereinander und nicht wie beim JOIN
nebeneinander gesetzt.
Die prinzipielle Schreibweise lautet:
SELECT feldliste_1 FROM tabelle_1 UNION [ALL] SELECT feldliste_2 FROM tabelle_2
Bei der UNION
-Abfrage werden mehrfach vorkommende Datensätze zusammengefasst
(entfernt). Wenn Sie das Schlüsselwort ALL
für UNION
nicht benutzen,
sind alle zurückgegebenen Zeilen eindeutig (unique), als hätten Sie ein DISTINCT
für den gesamten Ergebnissatz gemacht (UNION DISTINCT
kann auch geschrieben werden,
ist aber nicht erforderlich, da es der Voreinstellung entspricht). Wenn Sie ALL
angeben,
erhalten Sie alle übereinstimmenden Zeilen von allen benutzten SELECT
-Statements.
Die Spaltennamen der ersten SELECT
-Anweisung werden für die Ergebnisrückgabe benutzt. Spalten,
die an der gleichen Position der verschiedenen Abfragen stehen, sollten den gleichen Datentyp haben.
In früheren Versionen von MySQL mussten der Datentyp und die Länge des Datentyps übereinstimmen!
Beispielsweise liefert eine Union-Abfrage auf der Kundentabelle und der Tabelle der Mitarbeiter (tbl_kunden und tbl_mitarbeiter) alle Kunden und gleichzeitig alle Mitarbeiter, wobei diejenigen, die beides zugleich sind, nur einmal vorkommen.
[27]SELECT name, vorname, strasse
FROM tbl_kunden
UNION
SELECT name, vorname, strasse
FROM tbl_mitarbeiter
Achten Sie darauf, dass die Spalten in den verschiedenen Abfragen in der richtigen Reihenfolge sind, sonst kann es
zu unschönen Abfrageergebnissen kommen. Eine Umbenennung der Spalten ist auch hier mit AS
möglich.